Micron Document
🎖️GitЯра🎖️

Commit df402c5e81aab5a0c73e14f5b906bf9968a04d56


Parents : b70f57b
Author : James Rich <2199651+jamesarich@users.noreply.github.com>
Signature : Signature validation error
Date : 2026-08-17T20:37:23Z
Committer : GitHub <noreply@github.com>
Date : 2026-08-17T20:37:23Z

chore: Scheduled updates (Firmware, Hardware, Translations) (#6755)

Changes

79 files changed, 403 insertions(+), 58 deletions(-)


Diff

diff --git a/androidApp/src/main/assets/device_hardware.json b/androidApp/src/main/assets/device_hardware.json
index efcf04268b..5fd287d7e0 100644
--- a/androidApp/src/main/assets/device_hardware.json
+++ b/androidApp/src/main/assets/device_hardware.json
@@ -1552,5 +1552,18 @@
"images": [
"tbeam-bpf.svg"
]
+ },
+ {
+ "hwModel": 131,
+ "hwModelSlug": "THINKNODE_M9",
+ "platformioTarget": "thinknode-m9",
+ "architecture": "esp32-s3",
+ "activelySupported": false,
+ "supportLevel": 1,
+ "partitionScheme": "16MB",
+ "displayName": "Elecrow ThinkNode M9",
+ "tags": [
+ "Elecrow"
+ ]
}
]
\ No newline at end of file

diff --git a/core/resources/src/commonMain/composeResources/values-ar/strings.xml b/core/resources/src/commonMain/composeResources/values-ar/strings.xml
index 9bf4edbfd0..a09fc8c176 100644
--- a/core/resources/src/commonMain/composeResources/values-ar/strings.xml
+++ b/core/resources/src/commonMain/composeResources/values-ar/strings.xml
@@ -56,6 +56,7 @@
<string name="channels">القنوات</string>
<!-- CHIRPY -->
<!-- CLEAN -->
+ <!-- CLEAR -->
<string name="clear">مسح</string>
<string name="close">أغلق</string>
<!-- COMPASS -->

diff --git a/core/resources/src/commonMain/composeResources/values-be/strings.xml b/core/resources/src/commonMain/composeResources/values-be/strings.xml
index 1ee9fc3c9b..af969609bb 100644
--- a/core/resources/src/commonMain/composeResources/values-be/strings.xml
+++ b/core/resources/src/commonMain/composeResources/values-be/strings.xml
@@ -55,6 +55,7 @@
<string name="channels">Каналы</string>
<!-- CHIRPY -->
<!-- CLEAN -->
+ <!-- CLEAR -->
<string name="clear">Скінуць</string>
<string name="close">Закрыть</string>
<!-- COMPASS -->

diff --git a/core/resources/src/commonMain/composeResources/values-bg/strings.xml b/core/resources/src/commonMain/composeResources/values-bg/strings.xml
index 640512ff1a..97ce70004b 100644
--- a/core/resources/src/commonMain/composeResources/values-bg/strings.xml
+++ b/core/resources/src/commonMain/composeResources/values-bg/strings.xml
@@ -169,6 +169,7 @@
<string name="clean_nodes_older_than">Почистване на възлите, последно видяни преди повече от %1$d дни</string>
<string name="clean_now">Почистете сега</string>
<string name="clean_unknown_nodes">Почистване само на неизвестните възли</string>
+ <!-- CLEAR -->
<string name="clear">Изчисти</string>
<string name="clear_selection">Изчистване на избора</string>
<string name="clear_time_zone">Изчистване на часовата зона</string>

diff --git a/core/resources/src/commonMain/composeResources/values-ca/strings.xml b/core/resources/src/commonMain/composeResources/values-ca/strings.xml
index c19556a215..5022ab132a 100644
--- a/core/resources/src/commonMain/composeResources/values-ca/strings.xml
+++ b/core/resources/src/commonMain/composeResources/values-ca/strings.xml
@@ -44,6 +44,7 @@
<!-- CHIRPY -->
<string name="choose_theme">Escollir tema</string>
<!-- CLEAN -->
+ <!-- CLEAR -->
<string name="clear">Netejar</string>
<string name="close">Tancar</string>
<!-- COMPASS -->

diff --git a/core/resources/src/commonMain/composeResources/values-cs/strings.xml b/core/resources/src/commonMain/composeResources/values-cs/strings.xml
index d521e06903..09121717de 100644
--- a/core/resources/src/commonMain/composeResources/values-cs/strings.xml
+++ b/core/resources/src/commonMain/composeResources/values-cs/strings.xml
@@ -167,6 +167,7 @@
<string name="clean_nodes_older_than">Vyčistit uzly neaktivní déle než %1$d dnů</string>
<string name="clean_now">Vyčistit</string>
<string name="clean_unknown_nodes">Vyčistit pouze neznámé uzly</string>
+ <!-- CLEAR -->
<string name="clear">Vymazat</string>
<string name="clear_selection">Zrušit výběr</string>
<string name="clear_time_zone">Vymazat časové pásmo</string>
@@ -525,7 +526,6 @@
<string name="firmware_update_open_flasher">Otevřít Meshtastic Flasher</string>
<string name="firmware_update_ota_failed">Aktualizace OTA selhala: %1$s</string>
<string name="firmware_update_ota_unsupported_reason">OTA zavaděč tohoto zařízení odmítl požadovaný způsob aktualizace: %1$s</string>
- <string name="firmware_update_rak4631_bootloader_hint">Pro RAK WisBlock RAK4631 použijte sériový DFU nástroj výrobce (například adafruit-nrfutil dfu serial s dodaným .zip souborem bootloaderu). Pouhé zkopírování souboru .uf2 bootloader neaktualizuje.</string>
<string name="firmware_update_rebooting">Restartuji do DFU...</string>
<string name="firmware_update_release_notes">Poznámky k vydání</string>
<string name="firmware_update_requires_bin">Pro zařízení %1$s je vyžadován soubor .bin určený pro tento model.</string>

diff --git a/core/resources/src/commonMain/composeResources/values-de/strings.xml b/core/resources/src/commonMain/composeResources/values-de/strings.xml
index 09513daa0c..c382a29269 100644
--- a/core/resources/src/commonMain/composeResources/values-de/strings.xml
+++ b/core/resources/src/commonMain/composeResources/values-de/strings.xml
@@ -223,6 +223,7 @@
<string name="clean_nodes_older_than">Knoten älter als %1$d Tage entfernen</string>
<string name="clean_now">Jetzt leeren</string>
<string name="clean_unknown_nodes">Nur unbekannte Knoten entfernen</string>
+ <!-- CLEAR -->
<string name="clear">Leeren</string>
<string name="clear_selection">Auswahl löschen</string>
<string name="clear_time_zone">Zeitzone löschen</string>
@@ -646,7 +647,6 @@
<string name="firmware_update_open">Öffne Firmware Updates</string>
<string name="firmware_update_open_flasher">Öffne Meshtastic Flasher</string>
<string name="firmware_update_ota_failed">OTA Aktualisierung fehlgeschlagen: %1$s</string>
- <string name="firmware_update_rak4631_bootloader_hint">Für RAK WisBlock RAK4631 verwenden Sie die serielle DFU Software des Herstellers (z. B. adafruit-nrfutil dfu serial mit der mitgelieferten Bootloader-ZIP-Datei). Das alleinige Kopieren der .uf2 Datei aktualisiert den Bootloader nicht.</string>
<string name="firmware_update_rebooting">Neustart in DFU Modus...</string>
<string name="firmware_update_release_notes">Versionshinweise</string>
<string name="firmware_update_retrieval_failed">Konnte Firmware Datei nicht abrufen.</string>
@@ -1515,7 +1515,6 @@
<string name="tak_server_test_idle">Alle %1$d Tests an das Netz senden</string>
<string name="tak_server_test_result_bytes">%1$dB ✓</string>
<string name="tak_server_test_result_unknown_error">✗</string>
- <string name="tak_server_test_results">%1$d bestanden, %2$d fehlgeschlagen von %3$d/%4$d</string>
<string name="tak_server_test_run">Ausführen</string>
<string name="tak_server_test_running">Ausführen: %1$s</string>
<string name="tak_team">Teamfarbe</string>

diff --git a/core/resources/src/commonMain/composeResources/values-el/strings.xml b/core/resources/src/commonMain/composeResources/values-el/strings.xml
index c07364c8a6..15d53f4584 100644
--- a/core/resources/src/commonMain/composeResources/values-el/strings.xml
+++ b/core/resources/src/commonMain/composeResources/values-el/strings.xml
@@ -60,6 +60,7 @@
<!-- CHIRPY -->
<string name="choose_theme">Επέλεξε θέμα</string>
<!-- CLEAN -->
+ <!-- CLEAR -->
<string name="clear">Καθαρό, Εκκαθάριση,</string>
<string name="close">Κλείσιμο</string>
<!-- COMPASS -->

diff --git a/core/resources/src/commonMain/composeResources/values-es/strings.xml b/core/resources/src/commonMain/composeResources/values-es/strings.xml
index 88163d1704..61040d54b9 100644
--- a/core/resources/src/commonMain/composeResources/values-es/strings.xml
+++ b/core/resources/src/commonMain/composeResources/values-es/strings.xml
@@ -125,6 +125,7 @@
<string name="clean_nodes_older_than">Limpiar nodos vistos por última vez más de %1$d días</string>
<string name="clean_now">Limpiar ahora</string>
<string name="clean_unknown_nodes">Limpiar sólo nodos desconocidos</string>
+ <!-- CLEAR -->
<string name="clear">Limpiar</string>
<string name="clear_selection">Limpiar selección</string>
<string name="close">Cerrar</string>

diff --git a/core/resources/src/commonMain/composeResources/values-et/strings.xml b/core/resources/src/commonMain/composeResources/values-et/strings.xml
index 09c18ba176..44f954de89 100644
--- a/core/resources/src/commonMain/composeResources/values-et/strings.xml
+++ b/core/resources/src/commonMain/composeResources/values-et/strings.xml
@@ -225,6 +225,7 @@
<string name="clean_nodes_older_than">Eemalda sõlmed mida pole nähtud rohkem kui %1$d päeva</string>
<string name="clean_now">Eemalda nüüd</string>
<string name="clean_unknown_nodes">Eemalda tundmatud sõlmed</string>
+ <!-- CLEAR -->
<string name="clear">Kustuta</string>
<string name="clear_selection">Ära vali midagi</string>
<string name="clear_time_zone">Eemalda ajatsoon</string>
@@ -691,7 +692,6 @@
<string name="firmware_update_open_flasher">Ava Meshtastic uuendaja</string>
<string name="firmware_update_ota_failed">Üle-õhu värskendus ebaõnnestus: %1$s</string>
<string name="firmware_update_ota_unsupported_reason">Selle seadme OTA laadur lükkas tagasi taotletud värskendusmeetodi: %1$s</string>
- <string name="firmware_update_rak4631_bootloader_hint">RAK WisBlock RAK4631 puhul kasuta tootja jadapordi DFU-tööriista (näiteks adafruit-nrfutil dfu jadapordi oma koos alglaaduri .zip-failiga). Ainult .uf2-faili kopeerimine ei värskenda alglaadurit.</string>
<string name="firmware_update_rebooting">Taaskäivitamine DFU reziimi...</string>
<string name="firmware_update_release_notes">Väljalaske märkmed</string>
<string name="firmware_update_requires_bin">%1$s nõuab sihtmärgile vastavat .bin faili.</string>
@@ -1637,7 +1637,6 @@
<string name="tak_server_test_idle">Saada kõik %1$d testkinnitust kärgvõrku</string>
<string name="tak_server_test_result_bytes">%1$dB ✓</string>
<string name="tak_server_test_result_unknown_error">✗</string>
- <string name="tak_server_test_results">%1$d läbitud, %2$d ebaõnnestunud %3$d/%4$d</string>
<string name="tak_server_test_run">Käivita</string>
<string name="tak_server_test_running">Töötav: %1$s</string>
<string name="tak_team">Meeskonna värv</string>

diff --git a/core/resources/src/commonMain/composeResources/values-fi/strings.xml b/core/resources/src/commonMain/composeResources/values-fi/strings.xml
index 9631935ce6..9d8317d813 100644
--- a/core/resources/src/commonMain/composeResources/values-fi/strings.xml
+++ b/core/resources/src/commonMain/composeResources/values-fi/strings.xml
@@ -231,6 +231,7 @@
<string name="clean_nodes_older_than">Poista laitteet, joita ei ole nähty yli %1$d päivään</string>
<string name="clean_now">Poista nyt</string>
<string name="clean_unknown_nodes">Poista vain tuntemattomat laitteet</string>
+ <!-- CLEAR -->
<string name="clear">Tyhjennä</string>
<string name="clear_selection">Tyhjennä valinta</string>
<string name="clear_time_zone">Tyhjennä aikavyöhyke</string>
@@ -715,7 +716,6 @@
<string name="firmware_update_open_flasher">Avaa Meshtastic Flasher</string>
<string name="firmware_update_ota_failed">OTA-päivitys epäonnistui: %1$s</string>
<string name="firmware_update_ota_unsupported_reason">Tämän laitteen OTA-käynnistyslatain ei tue pyydettyä päivitystapaa: %1$s</string>
- <string name="firmware_update_rak4631_bootloader_hint">Käytä RAK WisBlock RAK4631 -laitteelle valmistajan sarjamuotoista DFU-työkalua (esimerkiksi adafruit-nrfutil dfu serial toimitetun bootloader .zip -tiedoston kanssa). Pelkän .uf2-tiedoston kopiointi ei päivitä bootloaderia.</string>
<string name="firmware_update_rebooting">Käynnistetään DFU-tilaan...</string>
<string name="firmware_update_release_notes">Julkaisutiedot</string>
<string name="firmware_update_requires_bin">%1$s edellyttää kohteeseen sopivaa .bin-tiedostoa.</string>
@@ -1734,7 +1734,6 @@
<string name="tak_server_test_idle">Lähetä kaikki %1$d testisanomat mesh-verkkoon</string>
<string name="tak_server_test_result_bytes">%1$dB ✓</string>
<string name="tak_server_test_result_unknown_error">✗</string>
- <string name="tak_server_test_results">%1$d onnistui, %2$d epäonnistui yhteensä %3$d/%4$d testistä</string>
<string name="tak_server_test_run">Suorita</string>
<string name="tak_server_test_running">Käynnissä: %1$s</string>
<string name="tak_team">Tiimin väri</string>

diff --git a/core/resources/src/commonMain/composeResources/values-fr/strings.xml b/core/resources/src/commonMain/composeResources/values-fr/strings.xml
index b4bf3d9184..12e3ad8796 100644
--- a/core/resources/src/commonMain/composeResources/values-fr/strings.xml
+++ b/core/resources/src/commonMain/composeResources/values-fr/strings.xml
@@ -216,6 +216,7 @@
<string name="clean_nodes_older_than">Nettoyer les nœuds vus pour la dernière fois depuis %1$d jours</string>
<string name="clean_now">Nettoyer maintenant</string>
<string name="clean_unknown_nodes">Nettoyer uniquement les nœuds inconnus</string>
+ <!-- CLEAR -->
<string name="clear">Effacer</string>
<string name="clear_selection">Effacer la sélection</string>
<string name="clear_time_zone">Effacer le fuseau horaire</string>
@@ -603,7 +604,6 @@
<string name="firmware_update_open_flasher">Ouvrir le Flasher Meshtastic</string>
<string name="firmware_update_ota_failed">Échec de la mise à jour de l'OTA : %1$s</string>
<string name="firmware_update_ota_unsupported_reason">Le chargeur OTA de ce périphérique a rejeté la méthode de mise à jour demandée : %1$s</string>
- <string name="firmware_update_rak4631_bootloader_hint">Pour le RAK WisBlock RAK4631, utilisez l'outil DFU série du fournisseur (par exemple, adafruit-nrfutil dfu serial avec le fichier .zip du bootloader fourni). La copie du fichier .uf2 seul ne permettra pas de mettre à jour le bootloader.</string>
<string name="firmware_update_rebooting">Redémarrage en mode DFU...</string>
<string name="firmware_update_release_notes">Notes de Version</string>
<string name="firmware_update_requires_bin">%1$s nécessite un fichier .bin correspondant à la cible.</string>

diff --git a/core/resources/src/commonMain/composeResources/values-ga/strings.xml b/core/resources/src/commonMain/composeResources/values-ga/strings.xml
index f4f166cfe1..53ef6dce8e 100644
--- a/core/resources/src/commonMain/composeResources/values-ga/strings.xml
+++ b/core/resources/src/commonMain/composeResources/values-ga/strings.xml
@@ -51,6 +51,7 @@
<!-- CHIRPY -->
<string name="choose_theme">Roghnaigh téama</string>
<!-- CLEAN -->
+ <!-- CLEAR -->
<string name="clear">Glan</string>
<string name="close">Dún</string>
<!-- COMPASS -->

diff --git a/core/resources/src/commonMain/composeResources/values-gl/strings.xml b/core/resources/src/commonMain/composeResources/values-gl/strings.xml
index 82be16b867..30725adfeb 100644
--- a/core/resources/src/commonMain/composeResources/values-gl/strings.xml
+++ b/core/resources/src/commonMain/composeResources/values-gl/strings.xml
@@ -44,6 +44,7 @@
<!-- CHIRPY -->
<string name="choose_theme">Escoller tema</string>
<!-- CLEAN -->
+ <!-- CLEAR -->
<string name="clear">Limpar</string>
<string name="close">Pechar</string>
<!-- COMPASS -->

diff --git a/core/resources/src/commonMain/composeResources/values-he/strings.xml b/core/resources/src/commonMain/composeResources/values-he/strings.xml
index a203864a34..a4e1cb55d0 100644
--- a/core/resources/src/commonMain/composeResources/values-he/strings.xml
+++ b/core/resources/src/commonMain/composeResources/values-he/strings.xml
@@ -46,6 +46,7 @@
<!-- CHIRPY -->
<string name="choose_theme">בחר ערכת עיצוב</string>
<!-- CLEAN -->
+ <!-- CLEAR -->
<string name="clear">נקה</string>
<string name="close">סגור</string>
<!-- COMPASS -->

diff --git a/core/resources/src/commonMain/composeResources/values-hr/strings.xml b/core/resources/src/commonMain/composeResources/values-hr/strings.xml
index a637a36921..a28c6d8bec 100644
--- a/core/resources/src/commonMain/composeResources/values-hr/strings.xml
+++ b/core/resources/src/commonMain/composeResources/values-hr/strings.xml
@@ -47,6 +47,7 @@
<!-- CHIRPY -->
<string name="choose_theme">Odaberi temu</string>
<!-- CLEAN -->
+ <!-- CLEAR -->
<string name="clear">Očisti</string>
<string name="close">Zatvori</string>
<!-- COMPASS -->

diff --git a/core/resources/src/commonMain/composeResources/values-ht/strings.xml b/core/resources/src/commonMain/composeResources/values-ht/strings.xml
index be5a39ef78..a4c38216a4 100644
--- a/core/resources/src/commonMain/composeResources/values-ht/strings.xml
+++ b/core/resources/src/commonMain/composeResources/values-ht/strings.xml
@@ -51,6 +51,7 @@
<!-- CHIRPY -->
<string name="choose_theme">Chwazi tèm</string>
<!-- CLEAN -->
+ <!-- CLEAR -->
<string name="clear">Netwaye</string>
<string name="close">Fèmen</string>
<!-- COMPASS -->

diff --git a/core/resources/src/commonMain/composeResources/values-hu/strings.xml b/core/resources/src/commonMain/composeResources/values-hu/strings.xml
index 11656876da..3376c8e185 100644
--- a/core/resources/src/commonMain/composeResources/values-hu/strings.xml
+++ b/core/resources/src/commonMain/composeResources/values-hu/strings.xml
@@ -127,6 +127,7 @@
<string name="clean_nodes_older_than">%1$d napnál régebben látott csomópontok törlése</string>
<string name="clean_now">Azonnali tisztítás</string>
<string name="clean_unknown_nodes">Csak ismeretlen csomópontok törlése</string>
+ <!-- CLEAR -->
<string name="clear">Töröl</string>
<string name="clear_selection">Kijelölés törlése</string>
<string name="client_notification">Kliens értesítés</string>

diff --git a/core/resources/src/commonMain/composeResources/values-is/strings.xml b/core/resources/src/commonMain/composeResources/values-is/strings.xml
index 82d90aefd5..3952b37462 100644
--- a/core/resources/src/commonMain/composeResources/values-is/strings.xml
+++ b/core/resources/src/commonMain/composeResources/values-is/strings.xml
@@ -43,6 +43,7 @@
<!-- CHIRPY -->
<string name="choose_theme">Veldu þema</string>
<!-- CLEAN -->
+ <!-- CLEAR -->
<string name="clear">Hreinsa</string>
<string name="close">Loka</string>
<!-- COMPASS -->

diff --git a/core/resources/src/commonMain/composeResources/values-it/strings.xml b/core/resources/src/commonMain/composeResources/values-it/strings.xml
index 6e183c2f09..be5c50fa33 100644
--- a/core/resources/src/commonMain/composeResources/values-it/strings.xml
+++ b/core/resources/src/commonMain/composeResources/values-it/strings.xml
@@ -224,6 +224,7 @@
<string name="clean_nodes_older_than">Elimina i nodi visti per l'ultima volta più di %1$d giorni fa</string>
<string name="clean_now">Elimina ora</string>
<string name="clean_unknown_nodes">Elimina solo i nodi sconosciuti</string>
+ <!-- CLEAR -->
<string name="clear">Svuota</string>
<string name="clear_selection">Annulla selezione</string>
<string name="clear_time_zone">Cancella fuso orario</string>
@@ -690,7 +691,6 @@
<string name="firmware_update_open_flasher">Apri Meshtastic Flasher</string>
<string name="firmware_update_ota_failed">Aggiornamento OTA non riuscito: %1$s</string>
<string name="firmware_update_ota_unsupported_reason">Il loader OTA di questo dispositivo ha rifiutato il metodo di aggiornamento richiesto: %1$s</string>
- <string name="firmware_update_rak4631_bootloader_hint">Per il RAK WisBlock RAK4631, usa lo strumento DFU seriale del produttore (per esempio adafruit-nrfutil dfu serial con il file .zip del bootloader fornito). Copiare solo il file .uf2 non aggiorna il bootloader.</string>
<string name="firmware_update_rebooting">Riavvio in DFU...</string>
<string name="firmware_update_release_notes">Note di rilascio</string>
<string name="firmware_update_requires_bin">%1$s richiede un file .bin corrispondente al target.</string>
@@ -1638,7 +1638,6 @@
<string name="tak_server_test_idle">Invia alla mesh tutte le %1$d fixture di test</string>
<string name="tak_server_test_result_bytes">%1$dB ✓</string>
<string name="tak_server_test_result_unknown_error">✗</string>
- <string name="tak_server_test_results">%1$d superati, %2$d falliti su %3$d/%4$d</string>
<string name="tak_server_test_run">Esegui</string>
<string name="tak_server_test_running">In esecuzione: %1$s</string>
<string name="tak_team">Colore squadra</string>

diff --git a/core/resources/src/commonMain/composeResources/values-ja/strings.xml b/core/resources/src/commonMain/composeResources/values-ja/strings.xml
index 62c50eb10c..34e49c1ee9 100644
--- a/core/resources/src/commonMain/composeResources/values-ja/strings.xml
+++ b/core/resources/src/commonMain/composeResources/values-ja/strings.xml
@@ -224,6 +224,7 @@
<string name="clean_nodes_older_than">最終確認が %1$d 日より前のノードをクリーンアップ</string>
<string name="clean_now">今すぐクリーンアップ</string>
<string name="clean_unknown_nodes">不明なノードのみをクリーンアップ</string>
+ <!-- CLEAR -->
<string name="clear">削除</string>
<string name="clear_selection">選択を解除</string>
<string name="clear_time_zone">タイムゾーンをクリア</string>
@@ -686,7 +687,6 @@
<string name="firmware_update_open_flasher">Meshtastic Flasher を開く</string>
<string name="firmware_update_ota_failed">OTA 更新に失敗しました:%1$s</string>
<string name="firmware_update_ota_unsupported_reason">このデバイスの OTA ローダーが、要求された更新方法を拒否しました:%1$s</string>
- <string name="firmware_update_rak4631_bootloader_hint">RAK WisBlock RAK4631 では、ベンダー提供のシリアル DFU ツール(例:付属のブートローダー .zip ファイルを使った adafruit-nrfutil dfu serial)を使用してください。.uf2 ファイルをコピーするだけではブートローダーは更新されません。</string>
<string name="firmware_update_rebooting">DFU モードへ再起動しています…</string>
<string name="firmware_update_release_notes">リリースノート</string>
<string name="firmware_update_requires_bin">%1$s には、ターゲットに一致する .bin ファイルが必要です。</string>
@@ -1633,7 +1633,6 @@
<string name="tak_server_test_idle">%1$d 件のテストフィクスチャをすべてメッシュに送信</string>
<string name="tak_server_test_result_bytes">%1$dB ✓</string>
<string name="tak_server_test_result_unknown_error">✗</string>
- <string name="tak_server_test_results">%1$d 件成功、%2$d 件失敗 / %3$d/%4$d</string>
<string name="tak_server_test_run">実行</string>
<string name="tak_server_test_running">実行中:%1$s</string>
<string name="tak_team">チームカラー</string>

diff --git a/core/resources/src/commonMain/composeResources/values-ko/strings.xml b/core/resources/src/commonMain/composeResources/values-ko/strings.xml
index a018dae206..ccd07acbb1 100644
--- a/core/resources/src/commonMain/composeResources/values-ko/strings.xml
+++ b/core/resources/src/commonMain/composeResources/values-ko/strings.xml
@@ -94,6 +94,7 @@
<!-- CHIRPY -->
<string name="choose_theme">테마 선택</string>
<!-- CLEAN -->
+ <!-- CLEAR -->
<string name="clear">삭제</string>
<string name="client_notification">클라이언트 알림</string>
<string name="close">닫기</string>

diff --git a/core/resources/src/commonMain/composeResources/values-lt/strings.xml b/core/resources/src/commonMain/composeResources/values-lt/strings.xml
index df2768aadd..1e2c9e1c88 100644
--- a/core/resources/src/commonMain/composeResources/values-lt/strings.xml
+++ b/core/resources/src/commonMain/composeResources/values-lt/strings.xml
@@ -52,6 +52,7 @@
<!-- CHIRPY -->
<string name="choose_theme">Pasirinkite Aplinką</string>
<!-- CLEAN -->
+ <!-- CLEAR -->
<string name="clear">Išvalyti</string>
<string name="close">Uždaryti</string>
<!-- COMPASS -->

diff --git a/core/resources/src/commonMain/composeResources/values-nl/strings.xml b/core/resources/src/commonMain/composeResources/values-nl/strings.xml
index 1434e67ab4..2e736e11d7 100644
--- a/core/resources/src/commonMain/composeResources/values-nl/strings.xml
+++ b/core/resources/src/commonMain/composeResources/values-nl/strings.xml
@@ -79,6 +79,7 @@
<!-- CHIRPY -->
<string name="choose_theme">Kies thema</string>
<!-- CLEAN -->
+ <!-- CLEAR -->
<string name="clear">Wis</string>
<string name="close">Sluit</string>
<string name="codec_2_enabled">CODEC 2 ingeschakeld</string>

diff --git a/core/resources/src/commonMain/composeResources/values-no/strings.xml b/core/resources/src/commonMain/composeResources/values-no/strings.xml
index 7710f71b47..46beaed04b 100644
--- a/core/resources/src/commonMain/composeResources/values-no/strings.xml
+++ b/core/resources/src/commonMain/composeResources/values-no/strings.xml
@@ -52,6 +52,7 @@
<!-- CHIRPY -->
<string name="choose_theme">Velg tema</string>
<!-- CLEAN -->
+ <!-- CLEAR -->
<string name="clear">Tøm</string>
<string name="close">Lukk</string>
<!-- COMPASS -->

diff --git a/core/resources/src/commonMain/composeResources/values-pl/strings.xml b/core/resources/src/commonMain/composeResources/values-pl/strings.xml
index 2c2ba2c426..727c60e432 100644
--- a/core/resources/src/commonMain/composeResources/values-pl/strings.xml
+++ b/core/resources/src/commonMain/composeResources/values-pl/strings.xml
@@ -106,6 +106,7 @@
<string name="clean_nodes_older_than">Wyczyść węzły, które są starsze niż %1$d dni</string>
<string name="clean_now">Wyczyść teraz</string>
<string name="clean_unknown_nodes">Wyczyść tylko nieznane węzły</string>
+ <!-- CLEAR -->
<string name="clear">Czyść</string>
<string name="close">Zamknij</string>
<string name="close_selection">Zamknij wybór</string>

diff --git a/core/resources/src/commonMain/composeResources/values-pt-rBR/strings.xml b/core/resources/src/commonMain/composeResources/values-pt-rBR/strings.xml
index cee676d584..9017d77375 100644
--- a/core/resources/src/commonMain/composeResources/values-pt-rBR/strings.xml
+++ b/core/resources/src/commonMain/composeResources/values-pt-rBR/strings.xml
@@ -142,6 +142,7 @@
<string name="clean_nodes_older_than">Limpar nós vistos há mais de %1$d dias</string>
<string name="clean_now">Limpar Agora</string>
<string name="clean_unknown_nodes">Limpar somente nós desconhecidos</string>
+ <!-- CLEAR -->
<string name="clear">Limpar</string>
<string name="clear_selection">Limpar seleção</string>
<string name="client_notification">Notificação de cliente</string>

diff --git a/core/resources/src/commonMain/composeResources/values-pt/strings.xml b/core/resources/src/commonMain/composeResources/values-pt/strings.xml
index 5b53d026b8..39e22736ef 100644
--- a/core/resources/src/commonMain/composeResources/values-pt/strings.xml
+++ b/core/resources/src/commonMain/composeResources/values-pt/strings.xml
@@ -97,6 +97,7 @@
<!-- CHIRPY -->
<string name="choose_theme">Escolher tema</string>
<!-- CLEAN -->
+ <!-- CLEAR -->
<string name="clear">Limpar</string>
<string name="close">Fechar</string>
<string name="codec_2_enabled">CODEC 2 ativado</string>

diff --git a/core/resources/src/commonMain/composeResources/values-ro/strings.xml b/core/resources/src/commonMain/composeResources/values-ro/strings.xml
index 1ec8cd5682..b236c3e5b6 100644
--- a/core/resources/src/commonMain/composeResources/values-ro/strings.xml
+++ b/core/resources/src/commonMain/composeResources/values-ro/strings.xml
@@ -141,6 +141,7 @@
<string name="clean_nodes_older_than">Curăță nodurile văzute ultima dată mai vechi de %1$d zile</string>
<string name="clean_now">Curăţă acum</string>
<string name="clean_unknown_nodes">Curăță doar noduri necunoscute</string>
+ <!-- CLEAR -->
<string name="clear">Șterge</string>
<string name="clear_selection">Șterge selecția</string>
<string name="client_notification">Notificare client</string>

diff --git a/core/resources/src/commonMain/composeResources/values-ru/strings.xml b/core/resources/src/commonMain/composeResources/values-ru/strings.xml
index 4f2e5d997c..dad07252bf 100644
--- a/core/resources/src/commonMain/composeResources/values-ru/strings.xml
+++ b/core/resources/src/commonMain/composeResources/values-ru/strings.xml
@@ -233,6 +233,7 @@
<string name="clean_nodes_older_than">Очистить ноды, старее чем %1$d дней</string>
<string name="clean_now">Очистить сейчас</string>
<string name="clean_unknown_nodes">Очистить только неизвестные ноды</string>
+ <!-- CLEAR -->
<string name="clear">Очистить</string>
<string name="clear_selection">Очистить выбор</string>
<string name="clear_time_zone">Очистить часовой пояс</string>
@@ -719,7 +720,6 @@
<string name="firmware_update_open_flasher">Открыть флешер Meshtastic</string>
<string name="firmware_update_ota_failed">Ошибка обновления OTA: %1$s</string>
<string name="firmware_update_ota_unsupported_reason">OTA загрузчик этого устройства отклонил запрошенный метод обновления: %1$s</string>
- <string name="firmware_update_rak4631_bootloader_hint">Для RAK WisBlock RAK4631 используйте фирменный серийный инструмент DFU (например, adafruit-nrfutil dfu serial с предоставленным zip-файлом загрузчика). Простое копирование файла .uf2 не обновит загрузчик.</string>
<string name="firmware_update_rebooting">Перезагрузка в DFU...</string>
<string name="firmware_update_release_notes">Список изменений</string>
<string name="firmware_update_requires_bin">Для %1$s требуется файл .bin.</string>
@@ -1751,7 +1751,6 @@
<string name="tak_server_test_idle">Отправить все %1$d тестовых приспособлений в сеть</string>
<string name="tak_server_test_result_bytes">%1$dБ ✓</string>
<string name="tak_server_test_result_unknown_error">✗</string>
- <string name="tak_server_test_results">%1$d пройдено, %2$d неудачно из %3$d/%4$d</string>
<string name="tak_server_test_run">Запустить</string>
<string name="tak_server_test_running">Запущено: %1$s</string>
<string name="tak_team">Цвет команды</string>

diff --git a/core/resources/src/commonMain/composeResources/values-sk/strings.xml b/core/resources/src/commonMain/composeResources/values-sk/strings.xml
index a255b45d0c..6358073fe6 100644
--- a/core/resources/src/commonMain/composeResources/values-sk/strings.xml
+++ b/core/resources/src/commonMain/composeResources/values-sk/strings.xml
@@ -79,6 +79,7 @@
<!-- CHIRPY -->
<string name="choose_theme">Výber témy</string>
<!-- CLEAN -->
+ <!-- CLEAR -->
<string name="clear">Zmazať</string>
<string name="close">Zavrieť</string>
<string name="codec_2_enabled">CODEC 2 zapnutý</string>

diff --git a/core/resources/src/commonMain/composeResources/values-sl/strings.xml b/core/resources/src/commonMain/composeResources/values-sl/strings.xml
index 718ed26349..f0624ab63e 100644
--- a/core/resources/src/commonMain/composeResources/values-sl/strings.xml
+++ b/core/resources/src/commonMain/composeResources/values-sl/strings.xml
@@ -52,6 +52,7 @@
<!-- CHIRPY -->
<string name="choose_theme">Izberi temo</string>
<!-- CLEAN -->
+ <!-- CLEAR -->
<string name="clear">Počisti</string>
<string name="close">Zapri</string>
<!-- COMPASS -->

diff --git a/core/resources/src/commonMain/composeResources/values-sq/strings.xml b/core/resources/src/commonMain/composeResources/values-sq/strings.xml
index 29c346b7a7..47946a74c9 100644
--- a/core/resources/src/commonMain/composeResources/values-sq/strings.xml
+++ b/core/resources/src/commonMain/composeResources/values-sq/strings.xml
@@ -51,6 +51,7 @@
<!-- CHIRPY -->
<string name="choose_theme">Zgjidh temën</string>
<!-- CLEAN -->
+ <!-- CLEAR -->
<string name="clear">Pastro</string>
<string name="close">Mbylle</string>
<!-- COMPASS -->

diff --git a/core/resources/src/commonMain/composeResources/values-sr/strings.xml b/core/resources/src/commonMain/composeResources/values-sr/strings.xml
index 0db7531d3a..337745c330 100644
--- a/core/resources/src/commonMain/composeResources/values-sr/strings.xml
+++ b/core/resources/src/commonMain/composeResources/values-sr/strings.xml
@@ -89,6 +89,7 @@
<!-- CHIRPY -->
<string name="choose_theme">Одабери тему</string>
<!-- CLEAN -->
+ <!-- CLEAR -->
<string name="clear">Očisti</string>
<string name="close">Затвори</string>
<string name="coding_rate">Стопа кодирања</string>

diff --git a/core/resources/src/commonMain/composeResources/values-srp/strings.xml b/core/resources/src/commonMain/composeResources/values-srp/strings.xml
index 8ade837c42..b3e21140f4 100644
--- a/core/resources/src/commonMain/composeResources/values-srp/strings.xml
+++ b/core/resources/src/commonMain/composeResources/values-srp/strings.xml
@@ -89,6 +89,7 @@
<!-- CHIRPY -->
<string name="choose_theme">Одабери тему</string>
<!-- CLEAN -->
+ <!-- CLEAR -->
<string name="clear">Очисти</string>
<string name="close">Затвори</string>
<string name="coding_rate">Стопа кодирања</string>

diff --git a/core/resources/src/commonMain/composeResources/values-sv/strings.xml b/core/resources/src/commonMain/composeResources/values-sv/strings.xml
index 185e6529e2..c0409a523d 100644
--- a/core/resources/src/commonMain/composeResources/values-sv/strings.xml
+++ b/core/resources/src/commonMain/composeResources/values-sv/strings.xml
@@ -165,6 +165,7 @@
<string name="clean_nodes_older_than">Rensa bort noder som sågs för minst %1$d dagar sedan</string>
<string name="clean_now">Rensa nu</string>
<string name="clean_unknown_nodes">Rensa endast okända noder</string>
+ <!-- CLEAR -->
<string name="clear">Rensa</string>
<string name="clear_selection">Avmarkera</string>
<string name="clear_time_zone">Ta bort tidszon</string>
@@ -1255,7 +1256,6 @@
<string name="tak_server_status_off">Av</string>
<string name="tak_server_test_result_bytes">%1$dB ✓</string>
<string name="tak_server_test_result_unknown_error">✗</string>
- <string name="tak_server_test_results">%1$d passerade, %2$d misslyckades %3$d/%4$d</string>
<string name="tak_server_test_run">Kör</string>
<string name="tak_server_test_running">Kör: %1$s</string>
<string name="tak_team">Lagfärg</string>

diff --git a/core/resources/src/commonMain/composeResources/values-tr/strings.xml b/core/resources/src/commonMain/composeResources/values-tr/strings.xml
index ab2e016dff..b74ba1768f 100644
--- a/core/resources/src/commonMain/composeResources/values-tr/strings.xml
+++ b/core/resources/src/commonMain/composeResources/values-tr/strings.xml
@@ -100,6 +100,7 @@
<!-- CHIRPY -->
<string name="choose_theme">Tema seçin</string>
<!-- CLEAN -->
+ <!-- CLEAR -->
<string name="clear">Temizle</string>
<string name="close">Kapat</string>
<string name="codec_2_enabled">CODEC 2 etkinleştirildi</string>

diff --git a/core/resources/src/commonMain/composeResources/values-uk/strings.xml b/core/resources/src/commonMain/composeResources/values-uk/strings.xml
index 7ac62d7957..6fc7d18f41 100644
--- a/core/resources/src/commonMain/composeResources/values-uk/strings.xml
+++ b/core/resources/src/commonMain/composeResources/values-uk/strings.xml
@@ -165,6 +165,7 @@
<string name="clean_nodes_older_than">Очистити вузли, які не були онлайн більше %1$d дні(в)</string>
<string name="clean_now">Очистити зараз</string>
<string name="clean_unknown_nodes">Очистити лише невідомі вузли</string>
+ <!-- CLEAR -->
<string name="clear">Очистити</string>
<string name="clear_selection">Очистити вибір</string>
<string name="client_notification">Клієнтські повідомлення</string>

diff --git a/core/resources/src/commonMain/composeResources/values-zh-rCN/strings.xml b/core/resources/src/commonMain/composeResources/values-zh-rCN/strings.xml
index 96a7c638b4..f1606330d9 100644
--- a/core/resources/src/commonMain/composeResources/values-zh-rCN/strings.xml
+++ b/core/resources/src/commonMain/composeResources/values-zh-rCN/strings.xml
@@ -224,6 +224,7 @@
<string name="clean_nodes_older_than">清理上次看到的 %1$d 天以上的节点</string>
<string name="clean_now">立即清理</string>
<string name="clean_unknown_nodes">仅清理未知节点</string>
+ <!-- CLEAR -->
<string name="clear">清除</string>
<string name="clear_selection">清除选择</string>
<string name="clear_time_zone">重置时区设置</string>
@@ -697,7 +698,6 @@
<string name="firmware_update_open_flasher">打开 Meshtastic 官方网页刷机工具</string>
<string name="firmware_update_ota_failed">OTA更新失败: %1$s</string>
<string name="firmware_update_ota_unsupported_reason">该设备的 OTA 加载程序拒绝了请求的更新方式: %1$s</string>
- <string name="firmware_update_rak4631_bootloader_hint">对于 RAK WisBlock RAK4631,请使用厂商提供的串口 DFU 工具 (例如,使用提供的 bootloader .zip 文件配合 adafruit-nrfutil dfu serial 命令) .仅复制 .uf2 文件无法更新 Bootloader。</string>
<string name="firmware_update_rebooting">正在重启到 DFU……</string>
<string name="firmware_update_release_notes">更新日志</string>
<string name="firmware_update_requires_bin">%1$s 需要一个与目标设备匹配的 .bin 文件。</string>
@@ -1648,7 +1648,6 @@
<string name="tak_server_test_idle">全部发送 %1$d 将测试固件数据发送至网状网络</string>
<string name="tak_server_test_result_bytes">%1$dB 节点状态正常</string>
<string name="tak_server_test_result_unknown_error">失败</string>
- <string name="tak_server_test_results">%1$d 成功, %2$d 失败 %3$d/%4$d</string>
<string name="tak_server_test_run">运行</string>
<string name="tak_server_test_running">正在运行: %1$s</string>
<string name="tak_team">队伍颜色</string>

diff --git a/core/resources/src/commonMain/composeResources/values-zh-rTW/strings.xml b/core/resources/src/commonMain/composeResources/values-zh-rTW/strings.xml
index f495bbe1ac..16dd60a8f7 100644
--- a/core/resources/src/commonMain/composeResources/values-zh-rTW/strings.xml
+++ b/core/resources/src/commonMain/composeResources/values-zh-rTW/strings.xml
@@ -182,6 +182,7 @@
<string name="clean_nodes_older_than">清除最後出現時間超過 %1$d 日的節點</string>
<string name="clean_now">立即清理</string>
<string name="clean_unknown_nodes">僅清除不明節點</string>
+ <!-- CLEAR -->
<string name="clear">清除</string>
<string name="clear_selection">清除所選</string>
<string name="clear_time_zone">清除時區</string>
@@ -519,7 +520,6 @@
<string name="firmware_update_node_info_missing">缺少節點使用者資訊。</string>
<string name="firmware_update_not_found_in_release">在發行版本中找不到 %1$s 的韌體。</string>
<string name="firmware_update_ota_failed">OTA 更新失敗: %1$s</string>
- <string name="firmware_update_rak4631_bootloader_hint">對於 RAK WisBlock RAK4631,請使用廠商的序列 DFU 工具(例如,搭配提供的 bootloader .zip 檔使用 adafruit-nrfutil dfu serial)。僅複製 .uf2 檔案並不會更新 bootloader。</string>
<string name="firmware_update_rebooting">正在進入 DFU 模式⋯⋯</string>
<string name="firmware_update_release_notes">版本說明</string>
<string name="firmware_update_retrieval_failed">無法取得韌體檔案。</string>
@@ -1263,7 +1263,6 @@
<string name="tak_server_test_idle">傳送所有 %1$d 個測試固定裝置至 mesh</string>
<string name="tak_server_test_result_bytes">%1$dB ✓</string>
<string name="tak_server_test_result_unknown_error">✗</string>
- <string name="tak_server_test_results">%1$d 個通過,%2$d 個失敗,共 %3$d/%4$d</string>
<string name="tak_server_test_run">執行</string>
<string name="tak_server_test_running">執行中:%1$s</string>
<string name="tak_team">隊伍顏色</string>

diff --git a/docs/ar-rSA/user/firmware.md b/docs/ar-rSA/user/firmware.md
index 9dca56f044..98f8d6bda5 100644
--- a/docs/ar-rSA/user/firmware.md
+++ b/docs/ar-rSA/user/firmware.md
@@ -43,7 +43,15 @@ The most common update method for Android users:
When your radio is connected over **USB/serial** (rather than Bluetooth), the Firmware Update screen offers **USB File Transfer**. The app reboots the device into DFU mode, then prompts you to save the `.uf2` file to the device's DFU drive using the system file picker. This option appears only on a USB/serial connection — it is not available over Bluetooth.
-> ℹ️ **nRF bootloader note:** Some devices (e.g. RAK WisBlock RAK4631) need their bootloader flashed with the vendor's serial DFU tool (such as `adafruit-nrfutil`) — copying the `.uf2` alone won't update the bootloader. The app surfaces a hint when this applies.
+> ℹ️ **nRF bootloader note:** A vendor bootloader supplied as a `.zip` (e.g. RAK WisBlock RAK4631) has to be flashed with a serial DFU tool such as `adafruit-nrfutil` — copying that `.zip` to the drive won't work. A bootloader supplied as an `update-....uf2` **can** be installed by copying it to the drive; that is how the app's own bootloader upgrade works. The app surfaces a hint when the serial-only route applies.
+
+### Factory Erase and Bootloader Upgrade
+
+On a **USB/serial** connection, nRF52 and RP2040 devices also offer **Erase and reinstall** and, where an upgraded bootloader is published for the board, **Upgrade bootloader**.
+
+Erasing wipes everything on the device — channels, keys and all settings — and there is no backup, so the app asks for confirmation first. Both operations write two files in turn, so you will be asked to select the device's update drive twice: once for the erase or bootloader image, then again for the firmware.
+
+The app reads `INFO_UF2.TXT` from the drive you select to confirm it really is the device's update drive and to identify the board before writing anything. If it can't confirm which Bluetooth stack your device uses it refuses to erase and points you at the [Web Flasher](https://flasher.meshtastic.org) instead — picking wrong there can leave the device needing a hardware programmer to recover.
### Other Flashing Options

diff --git a/docs/be-rBY/user/firmware.md b/docs/be-rBY/user/firmware.md
index 76e809dc0b..ce08a34996 100644
--- a/docs/be-rBY/user/firmware.md
+++ b/docs/be-rBY/user/firmware.md
@@ -43,7 +43,15 @@ The most common update method for Android users:
When your radio is connected over **USB/serial** (rather than Bluetooth), the Firmware Update screen offers **USB File Transfer**. The app reboots the device into DFU mode, then prompts you to save the `.uf2` file to the device's DFU drive using the system file picker. This option appears only on a USB/serial connection — it is not available over Bluetooth.
-> ℹ️ **nRF bootloader note:** Some devices (e.g. RAK WisBlock RAK4631) need their bootloader flashed with the vendor's serial DFU tool (such as `adafruit-nrfutil`) — copying the `.uf2` alone won't update the bootloader. The app surfaces a hint when this applies.
+> ℹ️ **nRF bootloader note:** A vendor bootloader supplied as a `.zip` (e.g. RAK WisBlock RAK4631) has to be flashed with a serial DFU tool such as `adafruit-nrfutil` — copying that `.zip` to the drive won't work. A bootloader supplied as an `update-....uf2` **can** be installed by copying it to the drive; that is how the app's own bootloader upgrade works. The app surfaces a hint when the serial-only route applies.
+
+### Factory Erase and Bootloader Upgrade
+
+On a **USB/serial** connection, nRF52 and RP2040 devices also offer **Erase and reinstall** and, where an upgraded bootloader is published for the board, **Upgrade bootloader**.
+
+Erasing wipes everything on the device — channels, keys and all settings — and there is no backup, so the app asks for confirmation first. Both operations write two files in turn, so you will be asked to select the device's update drive twice: once for the erase or bootloader image, then again for the firmware.
+
+The app reads `INFO_UF2.TXT` from the drive you select to confirm it really is the device's update drive and to identify the board before writing anything. If it can't confirm which Bluetooth stack your device uses it refuses to erase and points you at the [Web Flasher](https://flasher.meshtastic.org) instead — picking wrong there can leave the device needing a hardware programmer to recover.
### Other Flashing Options

diff --git a/docs/bg-rBG/user/firmware.md b/docs/bg-rBG/user/firmware.md
index 4ff7a0aca9..001a4149b0 100644
--- a/docs/bg-rBG/user/firmware.md
+++ b/docs/bg-rBG/user/firmware.md
@@ -43,7 +43,15 @@ aliases:
When your radio is connected over **USB/serial** (rather than Bluetooth), the Firmware Update screen offers **USB File Transfer**. The app reboots the device into DFU mode, then prompts you to save the `.uf2` file to the device's DFU drive using the system file picker. This option appears only on a USB/serial connection — it is not available over Bluetooth.
-> ℹ️ **nRF bootloader note:** Some devices (e.g. RAK WisBlock RAK4631) need their bootloader flashed with the vendor's serial DFU tool (such as `adafruit-nrfutil`) — copying the `.uf2` alone won't update the bootloader. The app surfaces a hint when this applies.
+> ℹ️ **nRF bootloader note:** A vendor bootloader supplied as a `.zip` (e.g. RAK WisBlock RAK4631) has to be flashed with a serial DFU tool such as `adafruit-nrfutil` — copying that `.zip` to the drive won't work. A bootloader supplied as an `update-....uf2` **can** be installed by copying it to the drive; that is how the app's own bootloader upgrade works. The app surfaces a hint when the serial-only route applies.
+
+### Factory Erase and Bootloader Upgrade
+
+On a **USB/serial** connection, nRF52 and RP2040 devices also offer **Erase and reinstall** and, where an upgraded bootloader is published for the board, **Upgrade bootloader**.
+
+Erasing wipes everything on the device — channels, keys and all settings — and there is no backup, so the app asks for confirmation first. Both operations write two files in turn, so you will be asked to select the device's update drive twice: once for the erase or bootloader image, then again for the firmware.
+
+The app reads `INFO_UF2.TXT` from the drive you select to confirm it really is the device's update drive and to identify the board before writing anything. If it can't confirm which Bluetooth stack your device uses it refuses to erase and points you at the [Web Flasher](https://flasher.meshtastic.org) instead — picking wrong there can leave the device needing a hardware programmer to recover.
### Other Flashing Options

diff --git a/docs/ca-rES/user/firmware.md b/docs/ca-rES/user/firmware.md
index 4180b21eb1..034bac0483 100644
--- a/docs/ca-rES/user/firmware.md
+++ b/docs/ca-rES/user/firmware.md
@@ -43,7 +43,15 @@ The most common update method for Android users:
When your radio is connected over **USB/serial** (rather than Bluetooth), the Firmware Update screen offers **USB File Transfer**. The app reboots the device into DFU mode, then prompts you to save the `.uf2` file to the device's DFU drive using the system file picker. This option appears only on a USB/serial connection — it is not available over Bluetooth.
-> ℹ️ **nRF bootloader note:** Some devices (e.g. RAK WisBlock RAK4631) need their bootloader flashed with the vendor's serial DFU tool (such as `adafruit-nrfutil`) — copying the `.uf2` alone won't update the bootloader. The app surfaces a hint when this applies.
+> ℹ️ **nRF bootloader note:** A vendor bootloader supplied as a `.zip` (e.g. RAK WisBlock RAK4631) has to be flashed with a serial DFU tool such as `adafruit-nrfutil` — copying that `.zip` to the drive won't work. A bootloader supplied as an `update-....uf2` **can** be installed by copying it to the drive; that is how the app's own bootloader upgrade works. The app surfaces a hint when the serial-only route applies.
+
+### Factory Erase and Bootloader Upgrade
+
+On a **USB/serial** connection, nRF52 and RP2040 devices also offer **Erase and reinstall** and, where an upgraded bootloader is published for the board, **Upgrade bootloader**.
+
+Erasing wipes everything on the device — channels, keys and all settings — and there is no backup, so the app asks for confirmation first. Both operations write two files in turn, so you will be asked to select the device's update drive twice: once for the erase or bootloader image, then again for the firmware.
+
+The app reads `INFO_UF2.TXT` from the drive you select to confirm it really is the device's update drive and to identify the board before writing anything. If it can't confirm which Bluetooth stack your device uses it refuses to erase and points you at the [Web Flasher](https://flasher.meshtastic.org) instead — picking wrong there can leave the device needing a hardware programmer to recover.
### Other Flashing Options

diff --git a/docs/cs-rCZ/user/firmware.md b/docs/cs-rCZ/user/firmware.md
index ca8f91a823..e2e3055eb7 100644
--- a/docs/cs-rCZ/user/firmware.md
+++ b/docs/cs-rCZ/user/firmware.md
@@ -43,7 +43,15 @@ The most common update method for Android users:
When your radio is connected over **USB/serial** (rather than Bluetooth), the Firmware Update screen offers **USB File Transfer**. The app reboots the device into DFU mode, then prompts you to save the `.uf2` file to the device's DFU drive using the system file picker. This option appears only on a USB/serial connection — it is not available over Bluetooth.
-> ℹ️ **nRF bootloader note:** Some devices (e.g. RAK WisBlock RAK4631) need their bootloader flashed with the vendor's serial DFU tool (such as `adafruit-nrfutil`) — copying the `.uf2` alone won't update the bootloader. The app surfaces a hint when this applies.
+> ℹ️ **nRF bootloader note:** A vendor bootloader supplied as a `.zip` (e.g. RAK WisBlock RAK4631) has to be flashed with a serial DFU tool such as `adafruit-nrfutil` — copying that `.zip` to the drive won't work. A bootloader supplied as an `update-....uf2` **can** be installed by copying it to the drive; that is how the app's own bootloader upgrade works. The app surfaces a hint when the serial-only route applies.
+
+### Factory Erase and Bootloader Upgrade
+
+On a **USB/serial** connection, nRF52 and RP2040 devices also offer **Erase and reinstall** and, where an upgraded bootloader is published for the board, **Upgrade bootloader**.
+
+Erasing wipes everything on the device — channels, keys and all settings — and there is no backup, so the app asks for confirmation first. Both operations write two files in turn, so you will be asked to select the device's update drive twice: once for the erase or bootloader image, then again for the firmware.
+
+The app reads `INFO_UF2.TXT` from the drive you select to confirm it really is the device's update drive and to identify the board before writing anything. If it can't confirm which Bluetooth stack your device uses it refuses to erase and points you at the [Web Flasher](https://flasher.meshtastic.org) instead — picking wrong there can leave the device needing a hardware programmer to recover.
### Other Flashing Options

diff --git a/docs/de-rDE/user/firmware.md b/docs/de-rDE/user/firmware.md
index 1164432a84..8bda99c659 100644
--- a/docs/de-rDE/user/firmware.md
+++ b/docs/de-rDE/user/firmware.md
@@ -43,7 +43,15 @@ The most common update method for Android users:
When your radio is connected over **USB/serial** (rather than Bluetooth), the Firmware Update screen offers **USB File Transfer**. The app reboots the device into DFU mode, then prompts you to save the `.uf2` file to the device's DFU drive using the system file picker. This option appears only on a USB/serial connection — it is not available over Bluetooth.
-> ℹ️ **nRF bootloader note:** Some devices (e.g. RAK WisBlock RAK4631) need their bootloader flashed with the vendor's serial DFU tool (such as `adafruit-nrfutil`) — copying the `.uf2` alone won't update the bootloader. The app surfaces a hint when this applies.
+> ℹ️ **nRF bootloader note:** A vendor bootloader supplied as a `.zip` (e.g. RAK WisBlock RAK4631) has to be flashed with a serial DFU tool such as `adafruit-nrfutil` — copying that `.zip` to the drive won't work. A bootloader supplied as an `update-....uf2` **can** be installed by copying it to the drive; that is how the app's own bootloader upgrade works. The app surfaces a hint when the serial-only route applies.
+
+### Factory Erase and Bootloader Upgrade
+
+On a **USB/serial** connection, nRF52 and RP2040 devices also offer **Erase and reinstall** and, where an upgraded bootloader is published for the board, **Upgrade bootloader**.
+
+Erasing wipes everything on the device — channels, keys and all settings — and there is no backup, so the app asks for confirmation first. Both operations write two files in turn, so you will be asked to select the device's update drive twice: once for the erase or bootloader image, then again for the firmware.
+
+The app reads `INFO_UF2.TXT` from the drive you select to confirm it really is the device's update drive and to identify the board before writing anything. If it can't confirm which Bluetooth stack your device uses it refuses to erase and points you at the [Web Flasher](https://flasher.meshtastic.org) instead — picking wrong there can leave the device needing a hardware programmer to recover.
### Other Flashing Options

diff --git a/docs/el-rGR/user/firmware.md b/docs/el-rGR/user/firmware.md
index 6df7e9da4d..037a080195 100644
--- a/docs/el-rGR/user/firmware.md
+++ b/docs/el-rGR/user/firmware.md
@@ -43,7 +43,15 @@ The most common update method for Android users:
When your radio is connected over **USB/serial** (rather than Bluetooth), the Firmware Update screen offers **USB File Transfer**. The app reboots the device into DFU mode, then prompts you to save the `.uf2` file to the device's DFU drive using the system file picker. This option appears only on a USB/serial connection — it is not available over Bluetooth.
-> ℹ️ **nRF bootloader note:** Some devices (e.g. RAK WisBlock RAK4631) need their bootloader flashed with the vendor's serial DFU tool (such as `adafruit-nrfutil`) — copying the `.uf2` alone won't update the bootloader. The app surfaces a hint when this applies.
+> ℹ️ **nRF bootloader note:** A vendor bootloader supplied as a `.zip` (e.g. RAK WisBlock RAK4631) has to be flashed with a serial DFU tool such as `adafruit-nrfutil` — copying that `.zip` to the drive won't work. A bootloader supplied as an `update-....uf2` **can** be installed by copying it to the drive; that is how the app's own bootloader upgrade works. The app surfaces a hint when the serial-only route applies.
+
+### Factory Erase and Bootloader Upgrade
+
+On a **USB/serial** connection, nRF52 and RP2040 devices also offer **Erase and reinstall** and, where an upgraded bootloader is published for the board, **Upgrade bootloader**.
+
+Erasing wipes everything on the device — channels, keys and all settings — and there is no backup, so the app asks for confirmation first. Both operations write two files in turn, so you will be asked to select the device's update drive twice: once for the erase or bootloader image, then again for the firmware.
+
+The app reads `INFO_UF2.TXT` from the drive you select to confirm it really is the device's update drive and to identify the board before writing anything. If it can't confirm which Bluetooth stack your device uses it refuses to erase and points you at the [Web Flasher](https://flasher.meshtastic.org) instead — picking wrong there can leave the device needing a hardware programmer to recover.
### Other Flashing Options

diff --git a/docs/es-rES/user/firmware.md b/docs/es-rES/user/firmware.md
index 7f1cc840ab..4fa711c23b 100644
--- a/docs/es-rES/user/firmware.md
+++ b/docs/es-rES/user/firmware.md
@@ -43,7 +43,15 @@ The most common update method for Android users:
When your radio is connected over **USB/serial** (rather than Bluetooth), the Firmware Update screen offers **USB File Transfer**. The app reboots the device into DFU mode, then prompts you to save the `.uf2` file to the device's DFU drive using the system file picker. This option appears only on a USB/serial connection — it is not available over Bluetooth.
-> ℹ️ **nRF bootloader note:** Some devices (e.g. RAK WisBlock RAK4631) need their bootloader flashed with the vendor's serial DFU tool (such as `adafruit-nrfutil`) — copying the `.uf2` alone won't update the bootloader. The app surfaces a hint when this applies.
+> ℹ️ **nRF bootloader note:** A vendor bootloader supplied as a `.zip` (e.g. RAK WisBlock RAK4631) has to be flashed with a serial DFU tool such as `adafruit-nrfutil` — copying that `.zip` to the drive won't work. A bootloader supplied as an `update-....uf2` **can** be installed by copying it to the drive; that is how the app's own bootloader upgrade works. The app surfaces a hint when the serial-only route applies.
+
+### Factory Erase and Bootloader Upgrade
+
+On a **USB/serial** connection, nRF52 and RP2040 devices also offer **Erase and reinstall** and, where an upgraded bootloader is published for the board, **Upgrade bootloader**.
+
+Erasing wipes everything on the device — channels, keys and all settings — and there is no backup, so the app asks for confirmation first. Both operations write two files in turn, so you will be asked to select the device's update drive twice: once for the erase or bootloader image, then again for the firmware.
+
+The app reads `INFO_UF2.TXT` from the drive you select to confirm it really is the device's update drive and to identify the board before writing anything. If it can't confirm which Bluetooth stack your device uses it refuses to erase and points you at the [Web Flasher](https://flasher.meshtastic.org) instead — picking wrong there can leave the device needing a hardware programmer to recover.
### Other Flashing Options

diff --git a/docs/et-rEE/user/firmware.md b/docs/et-rEE/user/firmware.md
index 8193d1e9ca..3ed760fc01 100644
--- a/docs/et-rEE/user/firmware.md
+++ b/docs/et-rEE/user/firmware.md
@@ -43,7 +43,15 @@ Kõige levinum värskendamisviis Androidi kasutajate seas:
Kui raadio on ühendatud **USB/jadaühenduse** (mitte sinihamba) kaudu, pakub püsivara värskendamise ekraan **USB failiedastust**. Rakendus taaskäivitab seadme DFU-režiimis ja seejärel palub süsteemifailide valija abil salvestada `.uf2`-fail seadme DFU-draivi. See valik kuvatakse ainult USB/jadaühenduse korral – see pole sinihamba ​​kaudu saadaval.
-> ℹ️ **nRF alglaaduri märkus:** Mõned seadmed (nt RAK WisBlock RAK4631) vajavad alglaaduri vilkumist tootja jadaühenduse DFU tööriistaga (näiteks `adafruit-nrfutil`) – ainuüksi `.uf2` kopeerimine ei värskenda alglaadurit. The app surfaces a hint when this applies.
+> ℹ️ **nRF bootloader note:** A vendor bootloader supplied as a `.zip` (e.g. RAK WisBlock RAK4631) has to be flashed with a serial DFU tool such as `adafruit-nrfutil` — copying that `.zip` to the drive won't work. A bootloader supplied as an `update-....uf2` **can** be installed by copying it to the drive; that is how the app's own bootloader upgrade works. The app surfaces a hint when the serial-only route applies.
+
+### Factory Erase and Bootloader Upgrade
+
+On a **USB/serial** connection, nRF52 and RP2040 devices also offer **Erase and reinstall** and, where an upgraded bootloader is published for the board, **Upgrade bootloader**.
+
+Erasing wipes everything on the device — channels, keys and all settings — and there is no backup, so the app asks for confirmation first. Both operations write two files in turn, so you will be asked to select the device's update drive twice: once for the erase or bootloader image, then again for the firmware.
+
+The app reads `INFO_UF2.TXT` from the drive you select to confirm it really is the device's update drive and to identify the board before writing anything. If it can't confirm which Bluetooth stack your device uses it refuses to erase and points you at the [Web Flasher](https://flasher.meshtastic.org) instead — picking wrong there can leave the device needing a hardware programmer to recover.
### Muud püsivarauuenduse valikud

diff --git a/docs/fi-rFI/user/firmware.md b/docs/fi-rFI/user/firmware.md
index a92b07b0e1..9a530783f4 100644
--- a/docs/fi-rFI/user/firmware.md
+++ b/docs/fi-rFI/user/firmware.md
@@ -43,7 +43,15 @@ Yleisin päivitystapa Android-käyttäjille:
Kun radio on yhdistetty **USB:n tai sarjayhteyden** kautta (bluetoothin sijaan), **laiteohjelmiston päivitys** -näkymässä on käytettävissä **USB-tiedostonsiirto**. Sovellus käynnistää laitteen uudelleen DFU-tilaan ja pyytää sitten tallentamaan `.uf2`-tiedoston laitteen DFU-asemaan järjestelmän tiedostonvalitsimen avulla. Tämä vaihtoehto näkyy vain USB tai sarjayhteydellä — sitä ei voi käyttää bluetoothin kautta.
-> ℹ️ **nRF-käynnistyslatain:** Jotkin laitteet (esimerkiksi RAK WisBlock RAK4631) edellyttävät, että käynnistyslatain päivitetään valmistajan sarjamuotoisella DFU-työkalulla (kuten `adafruit-nrfutil`). Pelkän `.uf2`-tiedoston kopioiminen ei päivitä käynnistyslatainta. Sovellus näyttää tästä vihjeen, kun se on tarpeen.
+> ℹ️ **nRF bootloader note:** A vendor bootloader supplied as a `.zip` (e.g. RAK WisBlock RAK4631) has to be flashed with a serial DFU tool such as `adafruit-nrfutil` — copying that `.zip` to the drive won't work. A bootloader supplied as an `update-....uf2` **can** be installed by copying it to the drive; that is how the app's own bootloader upgrade works. The app surfaces a hint when the serial-only route applies.
+
+### Factory Erase and Bootloader Upgrade
+
+On a **USB/serial** connection, nRF52 and RP2040 devices also offer **Erase and reinstall** and, where an upgraded bootloader is published for the board, **Upgrade bootloader**.
+
+Erasing wipes everything on the device — channels, keys and all settings — and there is no backup, so the app asks for confirmation first. Both operations write two files in turn, so you will be asked to select the device's update drive twice: once for the erase or bootloader image, then again for the firmware.
+
+The app reads `INFO_UF2.TXT` from the drive you select to confirm it really is the device's update drive and to identify the board before writing anything. If it can't confirm which Bluetooth stack your device uses it refuses to erase and points you at the [Web Flasher](https://flasher.meshtastic.org) instead — picking wrong there can leave the device needing a hardware programmer to recover.
### Muut päivitysvaihtoehdot

diff --git a/docs/fr-rFR/user/firmware.md b/docs/fr-rFR/user/firmware.md
index fd4a1b49ca..22e275cd97 100644
--- a/docs/fr-rFR/user/firmware.md
+++ b/docs/fr-rFR/user/firmware.md
@@ -43,7 +43,15 @@ The most common update method for Android users:
When your radio is connected over **USB/serial** (rather than Bluetooth), the Firmware Update screen offers **USB File Transfer**. The app reboots the device into DFU mode, then prompts you to save the `.uf2` file to the device's DFU drive using the system file picker. This option appears only on a USB/serial connection — it is not available over Bluetooth.
-> ℹ️ **nRF bootloader note:** Some devices (e.g. RAK WisBlock RAK4631) need their bootloader flashed with the vendor's serial DFU tool (such as `adafruit-nrfutil`) — copying the `.uf2` alone won't update the bootloader. The app surfaces a hint when this applies.
+> ℹ️ **nRF bootloader note:** A vendor bootloader supplied as a `.zip` (e.g. RAK WisBlock RAK4631) has to be flashed with a serial DFU tool such as `adafruit-nrfutil` — copying that `.zip` to the drive won't work. A bootloader supplied as an `update-....uf2` **can** be installed by copying it to the drive; that is how the app's own bootloader upgrade works. The app surfaces a hint when the serial-only route applies.
+
+### Factory Erase and Bootloader Upgrade
+
+On a **USB/serial** connection, nRF52 and RP2040 devices also offer **Erase and reinstall** and, where an upgraded bootloader is published for the board, **Upgrade bootloader**.
+
+Erasing wipes everything on the device — channels, keys and all settings — and there is no backup, so the app asks for confirmation first. Both operations write two files in turn, so you will be asked to select the device's update drive twice: once for the erase or bootloader image, then again for the firmware.
+
+The app reads `INFO_UF2.TXT` from the drive you select to confirm it really is the device's update drive and to identify the board before writing anything. If it can't confirm which Bluetooth stack your device uses it refuses to erase and points you at the [Web Flasher](https://flasher.meshtastic.org) instead — picking wrong there can leave the device needing a hardware programmer to recover.
### Other Flashing Options

diff --git a/docs/ga-rIE/user/firmware.md b/docs/ga-rIE/user/firmware.md
index cdefe5d216..7196555e3f 100644
--- a/docs/ga-rIE/user/firmware.md
+++ b/docs/ga-rIE/user/firmware.md
@@ -43,7 +43,15 @@ The most common update method for Android users:
When your radio is connected over **USB/serial** (rather than Bluetooth), the Firmware Update screen offers **USB File Transfer**. The app reboots the device into DFU mode, then prompts you to save the `.uf2` file to the device's DFU drive using the system file picker. This option appears only on a USB/serial connection — it is not available over Bluetooth.
-> ℹ️ **nRF bootloader note:** Some devices (e.g. RAK WisBlock RAK4631) need their bootloader flashed with the vendor's serial DFU tool (such as `adafruit-nrfutil`) — copying the `.uf2` alone won't update the bootloader. The app surfaces a hint when this applies.
+> ℹ️ **nRF bootloader note:** A vendor bootloader supplied as a `.zip` (e.g. RAK WisBlock RAK4631) has to be flashed with a serial DFU tool such as `adafruit-nrfutil` — copying that `.zip` to the drive won't work. A bootloader supplied as an `update-....uf2` **can** be installed by copying it to the drive; that is how the app's own bootloader upgrade works. The app surfaces a hint when the serial-only route applies.
+
+### Factory Erase and Bootloader Upgrade
+
+On a **USB/serial** connection, nRF52 and RP2040 devices also offer **Erase and reinstall** and, where an upgraded bootloader is published for the board, **Upgrade bootloader**.
+
+Erasing wipes everything on the device — channels, keys and all settings — and there is no backup, so the app asks for confirmation first. Both operations write two files in turn, so you will be asked to select the device's update drive twice: once for the erase or bootloader image, then again for the firmware.
+
+The app reads `INFO_UF2.TXT` from the drive you select to confirm it really is the device's update drive and to identify the board before writing anything. If it can't confirm which Bluetooth stack your device uses it refuses to erase and points you at the [Web Flasher](https://flasher.meshtastic.org) instead — picking wrong there can leave the device needing a hardware programmer to recover.
### Other Flashing Options

diff --git a/docs/gl-rES/user/firmware.md b/docs/gl-rES/user/firmware.md
index 4315381526..c82718fdf1 100644
--- a/docs/gl-rES/user/firmware.md
+++ b/docs/gl-rES/user/firmware.md
@@ -43,7 +43,15 @@ The most common update method for Android users:
When your radio is connected over **USB/serial** (rather than Bluetooth), the Firmware Update screen offers **USB File Transfer**. The app reboots the device into DFU mode, then prompts you to save the `.uf2` file to the device's DFU drive using the system file picker. This option appears only on a USB/serial connection — it is not available over Bluetooth.
-> ℹ️ **nRF bootloader note:** Some devices (e.g. RAK WisBlock RAK4631) need their bootloader flashed with the vendor's serial DFU tool (such as `adafruit-nrfutil`) — copying the `.uf2` alone won't update the bootloader. The app surfaces a hint when this applies.
+> ℹ️ **nRF bootloader note:** A vendor bootloader supplied as a `.zip` (e.g. RAK WisBlock RAK4631) has to be flashed with a serial DFU tool such as `adafruit-nrfutil` — copying that `.zip` to the drive won't work. A bootloader supplied as an `update-....uf2` **can** be installed by copying it to the drive; that is how the app's own bootloader upgrade works. The app surfaces a hint when the serial-only route applies.
+
+### Factory Erase and Bootloader Upgrade
+
+On a **USB/serial** connection, nRF52 and RP2040 devices also offer **Erase and reinstall** and, where an upgraded bootloader is published for the board, **Upgrade bootloader**.
+
+Erasing wipes everything on the device — channels, keys and all settings — and there is no backup, so the app asks for confirmation first. Both operations write two files in turn, so you will be asked to select the device's update drive twice: once for the erase or bootloader image, then again for the firmware.
+
+The app reads `INFO_UF2.TXT` from the drive you select to confirm it really is the device's update drive and to identify the board before writing anything. If it can't confirm which Bluetooth stack your device uses it refuses to erase and points you at the [Web Flasher](https://flasher.meshtastic.org) instead — picking wrong there can leave the device needing a hardware programmer to recover.
### Other Flashing Options

diff --git a/docs/hr-rHR/user/firmware.md b/docs/hr-rHR/user/firmware.md
index 4c9c0ffb26..a0cd1680e4 100644
--- a/docs/hr-rHR/user/firmware.md
+++ b/docs/hr-rHR/user/firmware.md
@@ -43,7 +43,15 @@ The most common update method for Android users:
When your radio is connected over **USB/serial** (rather than Bluetooth), the Firmware Update screen offers **USB File Transfer**. The app reboots the device into DFU mode, then prompts you to save the `.uf2` file to the device's DFU drive using the system file picker. This option appears only on a USB/serial connection — it is not available over Bluetooth.
-> ℹ️ **nRF bootloader note:** Some devices (e.g. RAK WisBlock RAK4631) need their bootloader flashed with the vendor's serial DFU tool (such as `adafruit-nrfutil`) — copying the `.uf2` alone won't update the bootloader. The app surfaces a hint when this applies.
+> ℹ️ **nRF bootloader note:** A vendor bootloader supplied as a `.zip` (e.g. RAK WisBlock RAK4631) has to be flashed with a serial DFU tool such as `adafruit-nrfutil` — copying that `.zip` to the drive won't work. A bootloader supplied as an `update-....uf2` **can** be installed by copying it to the drive; that is how the app's own bootloader upgrade works. The app surfaces a hint when the serial-only route applies.
+
+### Factory Erase and Bootloader Upgrade
+
+On a **USB/serial** connection, nRF52 and RP2040 devices also offer **Erase and reinstall** and, where an upgraded bootloader is published for the board, **Upgrade bootloader**.
+
+Erasing wipes everything on the device — channels, keys and all settings — and there is no backup, so the app asks for confirmation first. Both operations write two files in turn, so you will be asked to select the device's update drive twice: once for the erase or bootloader image, then again for the firmware.
+
+The app reads `INFO_UF2.TXT` from the drive you select to confirm it really is the device's update drive and to identify the board before writing anything. If it can't confirm which Bluetooth stack your device uses it refuses to erase and points you at the [Web Flasher](https://flasher.meshtastic.org) instead — picking wrong there can leave the device needing a hardware programmer to recover.
### Other Flashing Options

diff --git a/docs/ht-rHT/user/firmware.md b/docs/ht-rHT/user/firmware.md
index 8e766a3ad0..035f88c195 100644
--- a/docs/ht-rHT/user/firmware.md
+++ b/docs/ht-rHT/user/firmware.md
@@ -43,7 +43,15 @@ The most common update method for Android users:
When your radio is connected over **USB/serial** (rather than Bluetooth), the Firmware Update screen offers **USB File Transfer**. The app reboots the device into DFU mode, then prompts you to save the `.uf2` file to the device's DFU drive using the system file picker. This option appears only on a USB/serial connection — it is not available over Bluetooth.
-> ℹ️ **nRF bootloader note:** Some devices (e.g. RAK WisBlock RAK4631) need their bootloader flashed with the vendor's serial DFU tool (such as `adafruit-nrfutil`) — copying the `.uf2` alone won't update the bootloader. The app surfaces a hint when this applies.
+> ℹ️ **nRF bootloader note:** A vendor bootloader supplied as a `.zip` (e.g. RAK WisBlock RAK4631) has to be flashed with a serial DFU tool such as `adafruit-nrfutil` — copying that `.zip` to the drive won't work. A bootloader supplied as an `update-....uf2` **can** be installed by copying it to the drive; that is how the app's own bootloader upgrade works. The app surfaces a hint when the serial-only route applies.
+
+### Factory Erase and Bootloader Upgrade
+
+On a **USB/serial** connection, nRF52 and RP2040 devices also offer **Erase and reinstall** and, where an upgraded bootloader is published for the board, **Upgrade bootloader**.
+
+Erasing wipes everything on the device — channels, keys and all settings — and there is no backup, so the app asks for confirmation first. Both operations write two files in turn, so you will be asked to select the device's update drive twice: once for the erase or bootloader image, then again for the firmware.
+
+The app reads `INFO_UF2.TXT` from the drive you select to confirm it really is the device's update drive and to identify the board before writing anything. If it can't confirm which Bluetooth stack your device uses it refuses to erase and points you at the [Web Flasher](https://flasher.meshtastic.org) instead — picking wrong there can leave the device needing a hardware programmer to recover.
### Other Flashing Options

diff --git a/docs/hu-rHU/user/firmware.md b/docs/hu-rHU/user/firmware.md
index 7e792814bf..3dfdb90a24 100644
--- a/docs/hu-rHU/user/firmware.md
+++ b/docs/hu-rHU/user/firmware.md
@@ -43,7 +43,15 @@ The most common update method for Android users:
When your radio is connected over **USB/serial** (rather than Bluetooth), the Firmware Update screen offers **USB File Transfer**. The app reboots the device into DFU mode, then prompts you to save the `.uf2` file to the device's DFU drive using the system file picker. This option appears only on a USB/serial connection — it is not available over Bluetooth.
-> ℹ️ **nRF bootloader note:** Some devices (e.g. RAK WisBlock RAK4631) need their bootloader flashed with the vendor's serial DFU tool (such as `adafruit-nrfutil`) — copying the `.uf2` alone won't update the bootloader. The app surfaces a hint when this applies.
+> ℹ️ **nRF bootloader note:** A vendor bootloader supplied as a `.zip` (e.g. RAK WisBlock RAK4631) has to be flashed with a serial DFU tool such as `adafruit-nrfutil` — copying that `.zip` to the drive won't work. A bootloader supplied as an `update-....uf2` **can** be installed by copying it to the drive; that is how the app's own bootloader upgrade works. The app surfaces a hint when the serial-only route applies.
+
+### Factory Erase and Bootloader Upgrade
+
+On a **USB/serial** connection, nRF52 and RP2040 devices also offer **Erase and reinstall** and, where an upgraded bootloader is published for the board, **Upgrade bootloader**.
+
+Erasing wipes everything on the device — channels, keys and all settings — and there is no backup, so the app asks for confirmation first. Both operations write two files in turn, so you will be asked to select the device's update drive twice: once for the erase or bootloader image, then again for the firmware.
+
+The app reads `INFO_UF2.TXT` from the drive you select to confirm it really is the device's update drive and to identify the board before writing anything. If it can't confirm which Bluetooth stack your device uses it refuses to erase and points you at the [Web Flasher](https://flasher.meshtastic.org) instead — picking wrong there can leave the device needing a hardware programmer to recover.
### Other Flashing Options

diff --git a/docs/is-rIS/user/firmware.md b/docs/is-rIS/user/firmware.md
index 00de73d3dc..07e7f467c2 100644
--- a/docs/is-rIS/user/firmware.md
+++ b/docs/is-rIS/user/firmware.md
@@ -43,7 +43,15 @@ The most common update method for Android users:
When your radio is connected over **USB/serial** (rather than Bluetooth), the Firmware Update screen offers **USB File Transfer**. The app reboots the device into DFU mode, then prompts you to save the `.uf2` file to the device's DFU drive using the system file picker. This option appears only on a USB/serial connection — it is not available over Bluetooth.
-> ℹ️ **nRF bootloader note:** Some devices (e.g. RAK WisBlock RAK4631) need their bootloader flashed with the vendor's serial DFU tool (such as `adafruit-nrfutil`) — copying the `.uf2` alone won't update the bootloader. The app surfaces a hint when this applies.
+> ℹ️ **nRF bootloader note:** A vendor bootloader supplied as a `.zip` (e.g. RAK WisBlock RAK4631) has to be flashed with a serial DFU tool such as `adafruit-nrfutil` — copying that `.zip` to the drive won't work. A bootloader supplied as an `update-....uf2` **can** be installed by copying it to the drive; that is how the app's own bootloader upgrade works. The app surfaces a hint when the serial-only route applies.
+
+### Factory Erase and Bootloader Upgrade
+
+On a **USB/serial** connection, nRF52 and RP2040 devices also offer **Erase and reinstall** and, where an upgraded bootloader is published for the board, **Upgrade bootloader**.
+
+Erasing wipes everything on the device — channels, keys and all settings — and there is no backup, so the app asks for confirmation first. Both operations write two files in turn, so you will be asked to select the device's update drive twice: once for the erase or bootloader image, then again for the firmware.
+
+The app reads `INFO_UF2.TXT` from the drive you select to confirm it really is the device's update drive and to identify the board before writing anything. If it can't confirm which Bluetooth stack your device uses it refuses to erase and points you at the [Web Flasher](https://flasher.meshtastic.org) instead — picking wrong there can leave the device needing a hardware programmer to recover.
### Other Flashing Options

diff --git a/docs/it-rIT/user/firmware.md b/docs/it-rIT/user/firmware.md
index 1b2dc36ca9..9498296f3c 100644
--- a/docs/it-rIT/user/firmware.md
+++ b/docs/it-rIT/user/firmware.md
@@ -43,7 +43,15 @@ The most common update method for Android users:
When your radio is connected over **USB/serial** (rather than Bluetooth), the Firmware Update screen offers **USB File Transfer**. The app reboots the device into DFU mode, then prompts you to save the `.uf2` file to the device's DFU drive using the system file picker. This option appears only on a USB/serial connection — it is not available over Bluetooth.
-> ℹ️ **nRF bootloader note:** Some devices (e.g. RAK WisBlock RAK4631) need their bootloader flashed with the vendor's serial DFU tool (such as `adafruit-nrfutil`) — copying the `.uf2` alone won't update the bootloader. The app surfaces a hint when this applies.
+> ℹ️ **nRF bootloader note:** A vendor bootloader supplied as a `.zip` (e.g. RAK WisBlock RAK4631) has to be flashed with a serial DFU tool such as `adafruit-nrfutil` — copying that `.zip` to the drive won't work. A bootloader supplied as an `update-....uf2` **can** be installed by copying it to the drive; that is how the app's own bootloader upgrade works. The app surfaces a hint when the serial-only route applies.
+
+### Factory Erase and Bootloader Upgrade
+
+On a **USB/serial** connection, nRF52 and RP2040 devices also offer **Erase and reinstall** and, where an upgraded bootloader is published for the board, **Upgrade bootloader**.
+
+Erasing wipes everything on the device — channels, keys and all settings — and there is no backup, so the app asks for confirmation first. Both operations write two files in turn, so you will be asked to select the device's update drive twice: once for the erase or bootloader image, then again for the firmware.
+
+The app reads `INFO_UF2.TXT` from the drive you select to confirm it really is the device's update drive and to identify the board before writing anything. If it can't confirm which Bluetooth stack your device uses it refuses to erase and points you at the [Web Flasher](https://flasher.meshtastic.org) instead — picking wrong there can leave the device needing a hardware programmer to recover.
### Other Flashing Options

diff --git a/docs/iw-rIL/user/firmware.md b/docs/iw-rIL/user/firmware.md
index 4934e2169a..25cd2a5d25 100644
--- a/docs/iw-rIL/user/firmware.md
+++ b/docs/iw-rIL/user/firmware.md
@@ -43,7 +43,15 @@ The most common update method for Android users:
When your radio is connected over **USB/serial** (rather than Bluetooth), the Firmware Update screen offers **USB File Transfer**. The app reboots the device into DFU mode, then prompts you to save the `.uf2` file to the device's DFU drive using the system file picker. This option appears only on a USB/serial connection — it is not available over Bluetooth.
-> ℹ️ **nRF bootloader note:** Some devices (e.g. RAK WisBlock RAK4631) need their bootloader flashed with the vendor's serial DFU tool (such as `adafruit-nrfutil`) — copying the `.uf2` alone won't update the bootloader. The app surfaces a hint when this applies.
+> ℹ️ **nRF bootloader note:** A vendor bootloader supplied as a `.zip` (e.g. RAK WisBlock RAK4631) has to be flashed with a serial DFU tool such as `adafruit-nrfutil` — copying that `.zip` to the drive won't work. A bootloader supplied as an `update-....uf2` **can** be installed by copying it to the drive; that is how the app's own bootloader upgrade works. The app surfaces a hint when the serial-only route applies.
+
+### Factory Erase and Bootloader Upgrade
+
+On a **USB/serial** connection, nRF52 and RP2040 devices also offer **Erase and reinstall** and, where an upgraded bootloader is published for the board, **Upgrade bootloader**.
+
+Erasing wipes everything on the device — channels, keys and all settings — and there is no backup, so the app asks for confirmation first. Both operations write two files in turn, so you will be asked to select the device's update drive twice: once for the erase or bootloader image, then again for the firmware.
+
+The app reads `INFO_UF2.TXT` from the drive you select to confirm it really is the device's update drive and to identify the board before writing anything. If it can't confirm which Bluetooth stack your device uses it refuses to erase and points you at the [Web Flasher](https://flasher.meshtastic.org) instead — picking wrong there can leave the device needing a hardware programmer to recover.
### Other Flashing Options

diff --git a/docs/ja-rJP/user/firmware.md b/docs/ja-rJP/user/firmware.md
index 8f2d2fdf99..94660806a4 100644
--- a/docs/ja-rJP/user/firmware.md
+++ b/docs/ja-rJP/user/firmware.md
@@ -43,7 +43,15 @@ Android ユーザーにとって最も一般的な更新方法です:
無線機が(Bluetooth ではなく)**USB/シリアル**で接続されている場合、ファームウェア更新画面に「**USB ファイル転送**」が表示されます。 アプリはデバイスを DFU モードで再起動し、システムのファイル選択画面を使って `.uf2` ファイルをデバイスの DFU ドライブに保存するよう促します。 このオプションは USB/シリアル接続でのみ表示され、Bluetooth では利用できません。
-> ℹ️ **nRF ブートローダーに関する注意:** 一部のデバイス(例:RAK WisBlock RAK4631)では、ベンダーのシリアル DFU ツール(`adafruit-nrfutil` など)でブートローダーを書き込む必要があります。`.uf2` をコピーするだけではブートローダーは更新されません。 これに該当する場合、アプリがヒントを表示します。
+> ℹ️ **nRF bootloader note:** A vendor bootloader supplied as a `.zip` (e.g. RAK WisBlock RAK4631) has to be flashed with a serial DFU tool such as `adafruit-nrfutil` — copying that `.zip` to the drive won't work. A bootloader supplied as an `update-....uf2` **can** be installed by copying it to the drive; that is how the app's own bootloader upgrade works. The app surfaces a hint when the serial-only route applies.
+
+### Factory Erase and Bootloader Upgrade
+
+On a **USB/serial** connection, nRF52 and RP2040 devices also offer **Erase and reinstall** and, where an upgraded bootloader is published for the board, **Upgrade bootloader**.
+
+Erasing wipes everything on the device — channels, keys and all settings — and there is no backup, so the app asks for confirmation first. Both operations write two files in turn, so you will be asked to select the device's update drive twice: once for the erase or bootloader image, then again for the firmware.
+
+The app reads `INFO_UF2.TXT` from the drive you select to confirm it really is the device's update drive and to identify the board before writing anything. If it can't confirm which Bluetooth stack your device uses it refuses to erase and points you at the [Web Flasher](https://flasher.meshtastic.org) instead — picking wrong there can leave the device needing a hardware programmer to recover.
### その他の書き込み方法

diff --git a/docs/ko-rKR/user/firmware.md b/docs/ko-rKR/user/firmware.md
index c6688d8f0c..c3cbc9c1de 100644
--- a/docs/ko-rKR/user/firmware.md
+++ b/docs/ko-rKR/user/firmware.md
@@ -43,7 +43,15 @@ The most common update method for Android users:
When your radio is connected over **USB/serial** (rather than Bluetooth), the Firmware Update screen offers **USB File Transfer**. The app reboots the device into DFU mode, then prompts you to save the `.uf2` file to the device's DFU drive using the system file picker. This option appears only on a USB/serial connection — it is not available over Bluetooth.
-> ℹ️ **nRF bootloader note:** Some devices (e.g. RAK WisBlock RAK4631) need their bootloader flashed with the vendor's serial DFU tool (such as `adafruit-nrfutil`) — copying the `.uf2` alone won't update the bootloader. The app surfaces a hint when this applies.
+> ℹ️ **nRF bootloader note:** A vendor bootloader supplied as a `.zip` (e.g. RAK WisBlock RAK4631) has to be flashed with a serial DFU tool such as `adafruit-nrfutil` — copying that `.zip` to the drive won't work. A bootloader supplied as an `update-....uf2` **can** be installed by copying it to the drive; that is how the app's own bootloader upgrade works. The app surfaces a hint when the serial-only route applies.
+
+### Factory Erase and Bootloader Upgrade
+
+On a **USB/serial** connection, nRF52 and RP2040 devices also offer **Erase and reinstall** and, where an upgraded bootloader is published for the board, **Upgrade bootloader**.
+
+Erasing wipes everything on the device — channels, keys and all settings — and there is no backup, so the app asks for confirmation first. Both operations write two files in turn, so you will be asked to select the device's update drive twice: once for the erase or bootloader image, then again for the firmware.
+
+The app reads `INFO_UF2.TXT` from the drive you select to confirm it really is the device's update drive and to identify the board before writing anything. If it can't confirm which Bluetooth stack your device uses it refuses to erase and points you at the [Web Flasher](https://flasher.meshtastic.org) instead — picking wrong there can leave the device needing a hardware programmer to recover.
### Other Flashing Options

diff --git a/docs/lt-rLT/user/firmware.md b/docs/lt-rLT/user/firmware.md
index 8b9b67e419..a1a94affe6 100644
--- a/docs/lt-rLT/user/firmware.md
+++ b/docs/lt-rLT/user/firmware.md
@@ -43,7 +43,15 @@ The most common update method for Android users:
When your radio is connected over **USB/serial** (rather than Bluetooth), the Firmware Update screen offers **USB File Transfer**. The app reboots the device into DFU mode, then prompts you to save the `.uf2` file to the device's DFU drive using the system file picker. This option appears only on a USB/serial connection — it is not available over Bluetooth.
-> ℹ️ **nRF bootloader note:** Some devices (e.g. RAK WisBlock RAK4631) need their bootloader flashed with the vendor's serial DFU tool (such as `adafruit-nrfutil`) — copying the `.uf2` alone won't update the bootloader. The app surfaces a hint when this applies.
+> ℹ️ **nRF bootloader note:** A vendor bootloader supplied as a `.zip` (e.g. RAK WisBlock RAK4631) has to be flashed with a serial DFU tool such as `adafruit-nrfutil` — copying that `.zip` to the drive won't work. A bootloader supplied as an `update-....uf2` **can** be installed by copying it to the drive; that is how the app's own bootloader upgrade works. The app surfaces a hint when the serial-only route applies.
+
+### Factory Erase and Bootloader Upgrade
+
+On a **USB/serial** connection, nRF52 and RP2040 devices also offer **Erase and reinstall** and, where an upgraded bootloader is published for the board, **Upgrade bootloader**.
+
+Erasing wipes everything on the device — channels, keys and all settings — and there is no backup, so the app asks for confirmation first. Both operations write two files in turn, so you will be asked to select the device's update drive twice: once for the erase or bootloader image, then again for the firmware.
+
+The app reads `INFO_UF2.TXT` from the drive you select to confirm it really is the device's update drive and to identify the board before writing anything. If it can't confirm which Bluetooth stack your device uses it refuses to erase and points you at the [Web Flasher](https://flasher.meshtastic.org) instead — picking wrong there can leave the device needing a hardware programmer to recover.
### Other Flashing Options

diff --git a/docs/nl-rNL/user/firmware.md b/docs/nl-rNL/user/firmware.md
index b12470e83c..90828e5a74 100644
--- a/docs/nl-rNL/user/firmware.md
+++ b/docs/nl-rNL/user/firmware.md
@@ -43,7 +43,15 @@ The most common update method for Android users:
When your radio is connected over **USB/serial** (rather than Bluetooth), the Firmware Update screen offers **USB File Transfer**. The app reboots the device into DFU mode, then prompts you to save the `.uf2` file to the device's DFU drive using the system file picker. This option appears only on a USB/serial connection — it is not available over Bluetooth.
-> ℹ️ **nRF bootloader note:** Some devices (e.g. RAK WisBlock RAK4631) need their bootloader flashed with the vendor's serial DFU tool (such as `adafruit-nrfutil`) — copying the `.uf2` alone won't update the bootloader. The app surfaces a hint when this applies.
+> ℹ️ **nRF bootloader note:** A vendor bootloader supplied as a `.zip` (e.g. RAK WisBlock RAK4631) has to be flashed with a serial DFU tool such as `adafruit-nrfutil` — copying that `.zip` to the drive won't work. A bootloader supplied as an `update-....uf2` **can** be installed by copying it to the drive; that is how the app's own bootloader upgrade works. The app surfaces a hint when the serial-only route applies.
+
+### Factory Erase and Bootloader Upgrade
+
+On a **USB/serial** connection, nRF52 and RP2040 devices also offer **Erase and reinstall** and, where an upgraded bootloader is published for the board, **Upgrade bootloader**.
+
+Erasing wipes everything on the device — channels, keys and all settings — and there is no backup, so the app asks for confirmation first. Both operations write two files in turn, so you will be asked to select the device's update drive twice: once for the erase or bootloader image, then again for the firmware.
+
+The app reads `INFO_UF2.TXT` from the drive you select to confirm it really is the device's update drive and to identify the board before writing anything. If it can't confirm which Bluetooth stack your device uses it refuses to erase and points you at the [Web Flasher](https://flasher.meshtastic.org) instead — picking wrong there can leave the device needing a hardware programmer to recover.
### Other Flashing Options

diff --git a/docs/no-rNO/user/firmware.md b/docs/no-rNO/user/firmware.md
index f83022e431..745b167d3f 100644
--- a/docs/no-rNO/user/firmware.md
+++ b/docs/no-rNO/user/firmware.md
@@ -43,7 +43,15 @@ The most common update method for Android users:
When your radio is connected over **USB/serial** (rather than Bluetooth), the Firmware Update screen offers **USB File Transfer**. The app reboots the device into DFU mode, then prompts you to save the `.uf2` file to the device's DFU drive using the system file picker. This option appears only on a USB/serial connection — it is not available over Bluetooth.
-> ℹ️ **nRF bootloader note:** Some devices (e.g. RAK WisBlock RAK4631) need their bootloader flashed with the vendor's serial DFU tool (such as `adafruit-nrfutil`) — copying the `.uf2` alone won't update the bootloader. The app surfaces a hint when this applies.
+> ℹ️ **nRF bootloader note:** A vendor bootloader supplied as a `.zip` (e.g. RAK WisBlock RAK4631) has to be flashed with a serial DFU tool such as `adafruit-nrfutil` — copying that `.zip` to the drive won't work. A bootloader supplied as an `update-....uf2` **can** be installed by copying it to the drive; that is how the app's own bootloader upgrade works. The app surfaces a hint when the serial-only route applies.
+
+### Factory Erase and Bootloader Upgrade
+
+On a **USB/serial** connection, nRF52 and RP2040 devices also offer **Erase and reinstall** and, where an upgraded bootloader is published for the board, **Upgrade bootloader**.
+
+Erasing wipes everything on the device — channels, keys and all settings — and there is no backup, so the app asks for confirmation first. Both operations write two files in turn, so you will be asked to select the device's update drive twice: once for the erase or bootloader image, then again for the firmware.
+
+The app reads `INFO_UF2.TXT` from the drive you select to confirm it really is the device's update drive and to identify the board before writing anything. If it can't confirm which Bluetooth stack your device uses it refuses to erase and points you at the [Web Flasher](https://flasher.meshtastic.org) instead — picking wrong there can leave the device needing a hardware programmer to recover.
### Other Flashing Options

diff --git a/docs/pl-rPL/user/firmware.md b/docs/pl-rPL/user/firmware.md
index 69a29ab90b..4f61742bc8 100644
--- a/docs/pl-rPL/user/firmware.md
+++ b/docs/pl-rPL/user/firmware.md
@@ -43,7 +43,15 @@ The most common update method for Android users:
When your radio is connected over **USB/serial** (rather than Bluetooth), the Firmware Update screen offers **USB File Transfer**. The app reboots the device into DFU mode, then prompts you to save the `.uf2` file to the device's DFU drive using the system file picker. This option appears only on a USB/serial connection — it is not available over Bluetooth.
-> ℹ️ **nRF bootloader note:** Some devices (e.g. RAK WisBlock RAK4631) need their bootloader flashed with the vendor's serial DFU tool (such as `adafruit-nrfutil`) — copying the `.uf2` alone won't update the bootloader. The app surfaces a hint when this applies.
+> ℹ️ **nRF bootloader note:** A vendor bootloader supplied as a `.zip` (e.g. RAK WisBlock RAK4631) has to be flashed with a serial DFU tool such as `adafruit-nrfutil` — copying that `.zip` to the drive won't work. A bootloader supplied as an `update-....uf2` **can** be installed by copying it to the drive; that is how the app's own bootloader upgrade works. The app surfaces a hint when the serial-only route applies.
+
+### Factory Erase and Bootloader Upgrade
+
+On a **USB/serial** connection, nRF52 and RP2040 devices also offer **Erase and reinstall** and, where an upgraded bootloader is published for the board, **Upgrade bootloader**.
+
+Erasing wipes everything on the device — channels, keys and all settings — and there is no backup, so the app asks for confirmation first. Both operations write two files in turn, so you will be asked to select the device's update drive twice: once for the erase or bootloader image, then again for the firmware.
+
+The app reads `INFO_UF2.TXT` from the drive you select to confirm it really is the device's update drive and to identify the board before writing anything. If it can't confirm which Bluetooth stack your device uses it refuses to erase and points you at the [Web Flasher](https://flasher.meshtastic.org) instead — picking wrong there can leave the device needing a hardware programmer to recover.
### Other Flashing Options

diff --git a/docs/pt-rBR/user/firmware.md b/docs/pt-rBR/user/firmware.md
index 5bddc15fbd..c8156cca55 100644
--- a/docs/pt-rBR/user/firmware.md
+++ b/docs/pt-rBR/user/firmware.md
@@ -43,7 +43,15 @@ The most common update method for Android users:
When your radio is connected over **USB/serial** (rather than Bluetooth), the Firmware Update screen offers **USB File Transfer**. The app reboots the device into DFU mode, then prompts you to save the `.uf2` file to the device's DFU drive using the system file picker. This option appears only on a USB/serial connection — it is not available over Bluetooth.
-> ℹ️ **nRF bootloader note:** Some devices (e.g. RAK WisBlock RAK4631) need their bootloader flashed with the vendor's serial DFU tool (such as `adafruit-nrfutil`) — copying the `.uf2` alone won't update the bootloader. The app surfaces a hint when this applies.
+> ℹ️ **nRF bootloader note:** A vendor bootloader supplied as a `.zip` (e.g. RAK WisBlock RAK4631) has to be flashed with a serial DFU tool such as `adafruit-nrfutil` — copying that `.zip` to the drive won't work. A bootloader supplied as an `update-....uf2` **can** be installed by copying it to the drive; that is how the app's own bootloader upgrade works. The app surfaces a hint when the serial-only route applies.
+
+### Factory Erase and Bootloader Upgrade
+
+On a **USB/serial** connection, nRF52 and RP2040 devices also offer **Erase and reinstall** and, where an upgraded bootloader is published for the board, **Upgrade bootloader**.
+
+Erasing wipes everything on the device — channels, keys and all settings — and there is no backup, so the app asks for confirmation first. Both operations write two files in turn, so you will be asked to select the device's update drive twice: once for the erase or bootloader image, then again for the firmware.
+
+The app reads `INFO_UF2.TXT` from the drive you select to confirm it really is the device's update drive and to identify the board before writing anything. If it can't confirm which Bluetooth stack your device uses it refuses to erase and points you at the [Web Flasher](https://flasher.meshtastic.org) instead — picking wrong there can leave the device needing a hardware programmer to recover.
### Other Flashing Options

diff --git a/docs/pt-rPT/user/firmware.md b/docs/pt-rPT/user/firmware.md
index 5bddc15fbd..c8156cca55 100644
--- a/docs/pt-rPT/user/firmware.md
+++ b/docs/pt-rPT/user/firmware.md
@@ -43,7 +43,15 @@ The most common update method for Android users:
When your radio is connected over **USB/serial** (rather than Bluetooth), the Firmware Update screen offers **USB File Transfer**. The app reboots the device into DFU mode, then prompts you to save the `.uf2` file to the device's DFU drive using the system file picker. This option appears only on a USB/serial connection — it is not available over Bluetooth.
-> ℹ️ **nRF bootloader note:** Some devices (e.g. RAK WisBlock RAK4631) need their bootloader flashed with the vendor's serial DFU tool (such as `adafruit-nrfutil`) — copying the `.uf2` alone won't update the bootloader. The app surfaces a hint when this applies.
+> ℹ️ **nRF bootloader note:** A vendor bootloader supplied as a `.zip` (e.g. RAK WisBlock RAK4631) has to be flashed with a serial DFU tool such as `adafruit-nrfutil` — copying that `.zip` to the drive won't work. A bootloader supplied as an `update-....uf2` **can** be installed by copying it to the drive; that is how the app's own bootloader upgrade works. The app surfaces a hint when the serial-only route applies.
+
+### Factory Erase and Bootloader Upgrade
+
+On a **USB/serial** connection, nRF52 and RP2040 devices also offer **Erase and reinstall** and, where an upgraded bootloader is published for the board, **Upgrade bootloader**.
+
+Erasing wipes everything on the device — channels, keys and all settings — and there is no backup, so the app asks for confirmation first. Both operations write two files in turn, so you will be asked to select the device's update drive twice: once for the erase or bootloader image, then again for the firmware.
+
+The app reads `INFO_UF2.TXT` from the drive you select to confirm it really is the device's update drive and to identify the board before writing anything. If it can't confirm which Bluetooth stack your device uses it refuses to erase and points you at the [Web Flasher](https://flasher.meshtastic.org) instead — picking wrong there can leave the device needing a hardware programmer to recover.
### Other Flashing Options

diff --git a/docs/ro-rRO/user/firmware.md b/docs/ro-rRO/user/firmware.md
index 04cea86b76..34f6844448 100644
--- a/docs/ro-rRO/user/firmware.md
+++ b/docs/ro-rRO/user/firmware.md
@@ -43,7 +43,15 @@ The most common update method for Android users:
When your radio is connected over **USB/serial** (rather than Bluetooth), the Firmware Update screen offers **USB File Transfer**. The app reboots the device into DFU mode, then prompts you to save the `.uf2` file to the device's DFU drive using the system file picker. This option appears only on a USB/serial connection — it is not available over Bluetooth.
-> ℹ️ **nRF bootloader note:** Some devices (e.g. RAK WisBlock RAK4631) need their bootloader flashed with the vendor's serial DFU tool (such as `adafruit-nrfutil`) — copying the `.uf2` alone won't update the bootloader. The app surfaces a hint when this applies.
+> ℹ️ **nRF bootloader note:** A vendor bootloader supplied as a `.zip` (e.g. RAK WisBlock RAK4631) has to be flashed with a serial DFU tool such as `adafruit-nrfutil` — copying that `.zip` to the drive won't work. A bootloader supplied as an `update-....uf2` **can** be installed by copying it to the drive; that is how the app's own bootloader upgrade works. The app surfaces a hint when the serial-only route applies.
+
+### Factory Erase and Bootloader Upgrade
+
+On a **USB/serial** connection, nRF52 and RP2040 devices also offer **Erase and reinstall** and, where an upgraded bootloader is published for the board, **Upgrade bootloader**.
+
+Erasing wipes everything on the device — channels, keys and all settings — and there is no backup, so the app asks for confirmation first. Both operations write two files in turn, so you will be asked to select the device's update drive twice: once for the erase or bootloader image, then again for the firmware.
+
+The app reads `INFO_UF2.TXT` from the drive you select to confirm it really is the device's update drive and to identify the board before writing anything. If it can't confirm which Bluetooth stack your device uses it refuses to erase and points you at the [Web Flasher](https://flasher.meshtastic.org) instead — picking wrong there can leave the device needing a hardware programmer to recover.
### Other Flashing Options

diff --git a/docs/ru-rRU/user/firmware.md b/docs/ru-rRU/user/firmware.md
index 080803d385..d4a0c4d009 100644
--- a/docs/ru-rRU/user/firmware.md
+++ b/docs/ru-rRU/user/firmware.md
@@ -43,7 +43,15 @@ aliases:
Когда твоё радио подключено по **USB/seria**l (а не по Bluetooth), на экране обновления прошивки появляется опция **"Передача файла по USB"**. Приложение перезагружает устройство в режим DFU, а затем предлагает сохранить файл `.uf2` на DFU-диск устройства с помощью системного выбора файлов. Эта опция появляется только при подключении по USB/serial — она недоступна по Bluetooth.
-> ℹ️ **Примечание о загрузчике nRF:** Некоторым устройствам (например, RAK WisBlock RAK4631) требуется прошить загрузчик с помощью фирменной последовательной утилиты DFU (такой как `adafruit-nrfutil`) — простое копирование `.uf2` не обновит загрузчик. Приложение покажет подсказку, когда это необходимо.
+> ℹ️ **nRF bootloader note:** A vendor bootloader supplied as a `.zip` (e.g. RAK WisBlock RAK4631) has to be flashed with a serial DFU tool such as `adafruit-nrfutil` — copying that `.zip` to the drive won't work. A bootloader supplied as an `update-....uf2` **can** be installed by copying it to the drive; that is how the app's own bootloader upgrade works. The app surfaces a hint when the serial-only route applies.
+
+### Factory Erase and Bootloader Upgrade
+
+On a **USB/serial** connection, nRF52 and RP2040 devices also offer **Erase and reinstall** and, where an upgraded bootloader is published for the board, **Upgrade bootloader**.
+
+Erasing wipes everything on the device — channels, keys and all settings — and there is no backup, so the app asks for confirmation first. Both operations write two files in turn, so you will be asked to select the device's update drive twice: once for the erase or bootloader image, then again for the firmware.
+
+The app reads `INFO_UF2.TXT` from the drive you select to confirm it really is the device's update drive and to identify the board before writing anything. If it can't confirm which Bluetooth stack your device uses it refuses to erase and points you at the [Web Flasher](https://flasher.meshtastic.org) instead — picking wrong there can leave the device needing a hardware programmer to recover.
### Другие способы прошивки

diff --git a/docs/sk-rSK/user/firmware.md b/docs/sk-rSK/user/firmware.md
index 962da8b1d5..d38b9bdef8 100644
--- a/docs/sk-rSK/user/firmware.md
+++ b/docs/sk-rSK/user/firmware.md
@@ -43,7 +43,15 @@ The most common update method for Android users:
When your radio is connected over **USB/serial** (rather than Bluetooth), the Firmware Update screen offers **USB File Transfer**. The app reboots the device into DFU mode, then prompts you to save the `.uf2` file to the device's DFU drive using the system file picker. This option appears only on a USB/serial connection — it is not available over Bluetooth.
-> ℹ️ **nRF bootloader note:** Some devices (e.g. RAK WisBlock RAK4631) need their bootloader flashed with the vendor's serial DFU tool (such as `adafruit-nrfutil`) — copying the `.uf2` alone won't update the bootloader. The app surfaces a hint when this applies.
+> ℹ️ **nRF bootloader note:** A vendor bootloader supplied as a `.zip` (e.g. RAK WisBlock RAK4631) has to be flashed with a serial DFU tool such as `adafruit-nrfutil` — copying that `.zip` to the drive won't work. A bootloader supplied as an `update-....uf2` **can** be installed by copying it to the drive; that is how the app's own bootloader upgrade works. The app surfaces a hint when the serial-only route applies.
+
+### Factory Erase and Bootloader Upgrade
+
+On a **USB/serial** connection, nRF52 and RP2040 devices also offer **Erase and reinstall** and, where an upgraded bootloader is published for the board, **Upgrade bootloader**.
+
+Erasing wipes everything on the device — channels, keys and all settings — and there is no backup, so the app asks for confirmation first. Both operations write two files in turn, so you will be asked to select the device's update drive twice: once for the erase or bootloader image, then again for the firmware.
+
+The app reads `INFO_UF2.TXT` from the drive you select to confirm it really is the device's update drive and to identify the board before writing anything. If it can't confirm which Bluetooth stack your device uses it refuses to erase and points you at the [Web Flasher](https://flasher.meshtastic.org) instead — picking wrong there can leave the device needing a hardware programmer to recover.
### Other Flashing Options

diff --git a/docs/sl-rSI/user/firmware.md b/docs/sl-rSI/user/firmware.md
index 4c9c0ffb26..a0cd1680e4 100644
--- a/docs/sl-rSI/user/firmware.md
+++ b/docs/sl-rSI/user/firmware.md
@@ -43,7 +43,15 @@ The most common update method for Android users:
When your radio is connected over **USB/serial** (rather than Bluetooth), the Firmware Update screen offers **USB File Transfer**. The app reboots the device into DFU mode, then prompts you to save the `.uf2` file to the device's DFU drive using the system file picker. This option appears only on a USB/serial connection — it is not available over Bluetooth.
-> ℹ️ **nRF bootloader note:** Some devices (e.g. RAK WisBlock RAK4631) need their bootloader flashed with the vendor's serial DFU tool (such as `adafruit-nrfutil`) — copying the `.uf2` alone won't update the bootloader. The app surfaces a hint when this applies.
+> ℹ️ **nRF bootloader note:** A vendor bootloader supplied as a `.zip` (e.g. RAK WisBlock RAK4631) has to be flashed with a serial DFU tool such as `adafruit-nrfutil` — copying that `.zip` to the drive won't work. A bootloader supplied as an `update-....uf2` **can** be installed by copying it to the drive; that is how the app's own bootloader upgrade works. The app surfaces a hint when the serial-only route applies.
+
+### Factory Erase and Bootloader Upgrade
+
+On a **USB/serial** connection, nRF52 and RP2040 devices also offer **Erase and reinstall** and, where an upgraded bootloader is published for the board, **Upgrade bootloader**.
+
+Erasing wipes everything on the device — channels, keys and all settings — and there is no backup, so the app asks for confirmation first. Both operations write two files in turn, so you will be asked to select the device's update drive twice: once for the erase or bootloader image, then again for the firmware.
+
+The app reads `INFO_UF2.TXT` from the drive you select to confirm it really is the device's update drive and to identify the board before writing anything. If it can't confirm which Bluetooth stack your device uses it refuses to erase and points you at the [Web Flasher](https://flasher.meshtastic.org) instead — picking wrong there can leave the device needing a hardware programmer to recover.
### Other Flashing Options

diff --git a/docs/sq-rAL/user/firmware.md b/docs/sq-rAL/user/firmware.md
index debc2122fa..da4d0a3080 100644
--- a/docs/sq-rAL/user/firmware.md
+++ b/docs/sq-rAL/user/firmware.md
@@ -43,7 +43,15 @@ The most common update method for Android users:
When your radio is connected over **USB/serial** (rather than Bluetooth), the Firmware Update screen offers **USB File Transfer**. The app reboots the device into DFU mode, then prompts you to save the `.uf2` file to the device's DFU drive using the system file picker. This option appears only on a USB/serial connection — it is not available over Bluetooth.
-> ℹ️ **nRF bootloader note:** Some devices (e.g. RAK WisBlock RAK4631) need their bootloader flashed with the vendor's serial DFU tool (such as `adafruit-nrfutil`) — copying the `.uf2` alone won't update the bootloader. The app surfaces a hint when this applies.
+> ℹ️ **nRF bootloader note:** A vendor bootloader supplied as a `.zip` (e.g. RAK WisBlock RAK4631) has to be flashed with a serial DFU tool such as `adafruit-nrfutil` — copying that `.zip` to the drive won't work. A bootloader supplied as an `update-....uf2` **can** be installed by copying it to the drive; that is how the app's own bootloader upgrade works. The app surfaces a hint when the serial-only route applies.
+
+### Factory Erase and Bootloader Upgrade
+
+On a **USB/serial** connection, nRF52 and RP2040 devices also offer **Erase and reinstall** and, where an upgraded bootloader is published for the board, **Upgrade bootloader**.
+
+Erasing wipes everything on the device — channels, keys and all settings — and there is no backup, so the app asks for confirmation first. Both operations write two files in turn, so you will be asked to select the device's update drive twice: once for the erase or bootloader image, then again for the firmware.
+
+The app reads `INFO_UF2.TXT` from the drive you select to confirm it really is the device's update drive and to identify the board before writing anything. If it can't confirm which Bluetooth stack your device uses it refuses to erase and points you at the [Web Flasher](https://flasher.meshtastic.org) instead — picking wrong there can leave the device needing a hardware programmer to recover.
### Other Flashing Options

diff --git a/docs/sr-rLatn/user/firmware.md b/docs/sr-rLatn/user/firmware.md
index 4b0c5e2039..a164e8ed89 100644
--- a/docs/sr-rLatn/user/firmware.md
+++ b/docs/sr-rLatn/user/firmware.md
@@ -43,7 +43,15 @@ The most common update method for Android users:
When your radio is connected over **USB/serial** (rather than Bluetooth), the Firmware Update screen offers **USB File Transfer**. The app reboots the device into DFU mode, then prompts you to save the `.uf2` file to the device's DFU drive using the system file picker. This option appears only on a USB/serial connection — it is not available over Bluetooth.
-> ℹ️ **nRF bootloader note:** Some devices (e.g. RAK WisBlock RAK4631) need their bootloader flashed with the vendor's serial DFU tool (such as `adafruit-nrfutil`) — copying the `.uf2` alone won't update the bootloader. The app surfaces a hint when this applies.
+> ℹ️ **nRF bootloader note:** A vendor bootloader supplied as a `.zip` (e.g. RAK WisBlock RAK4631) has to be flashed with a serial DFU tool such as `adafruit-nrfutil` — copying that `.zip` to the drive won't work. A bootloader supplied as an `update-....uf2` **can** be installed by copying it to the drive; that is how the app's own bootloader upgrade works. The app surfaces a hint when the serial-only route applies.
+
+### Factory Erase and Bootloader Upgrade
+
+On a **USB/serial** connection, nRF52 and RP2040 devices also offer **Erase and reinstall** and, where an upgraded bootloader is published for the board, **Upgrade bootloader**.
+
+Erasing wipes everything on the device — channels, keys and all settings — and there is no backup, so the app asks for confirmation first. Both operations write two files in turn, so you will be asked to select the device's update drive twice: once for the erase or bootloader image, then again for the firmware.
+
+The app reads `INFO_UF2.TXT` from the drive you select to confirm it really is the device's update drive and to identify the board before writing anything. If it can't confirm which Bluetooth stack your device uses it refuses to erase and points you at the [Web Flasher](https://flasher.meshtastic.org) instead — picking wrong there can leave the device needing a hardware programmer to recover.
### Other Flashing Options

diff --git a/docs/srp/user/firmware.md b/docs/srp/user/firmware.md
index cd1c6f679e..a442ce92cb 100644
--- a/docs/srp/user/firmware.md
+++ b/docs/srp/user/firmware.md
@@ -43,7 +43,15 @@ The most common update method for Android users:
When your radio is connected over **USB/serial** (rather than Bluetooth), the Firmware Update screen offers **USB File Transfer**. The app reboots the device into DFU mode, then prompts you to save the `.uf2` file to the device's DFU drive using the system file picker. This option appears only on a USB/serial connection — it is not available over Bluetooth.
-> ℹ️ **nRF bootloader note:** Some devices (e.g. RAK WisBlock RAK4631) need their bootloader flashed with the vendor's serial DFU tool (such as `adafruit-nrfutil`) — copying the `.uf2` alone won't update the bootloader. The app surfaces a hint when this applies.
+> ℹ️ **nRF bootloader note:** A vendor bootloader supplied as a `.zip` (e.g. RAK WisBlock RAK4631) has to be flashed with a serial DFU tool such as `adafruit-nrfutil` — copying that `.zip` to the drive won't work. A bootloader supplied as an `update-....uf2` **can** be installed by copying it to the drive; that is how the app's own bootloader upgrade works. The app surfaces a hint when the serial-only route applies.
+
+### Factory Erase and Bootloader Upgrade
+
+On a **USB/serial** connection, nRF52 and RP2040 devices also offer **Erase and reinstall** and, where an upgraded bootloader is published for the board, **Upgrade bootloader**.
+
+Erasing wipes everything on the device — channels, keys and all settings — and there is no backup, so the app asks for confirmation first. Both operations write two files in turn, so you will be asked to select the device's update drive twice: once for the erase or bootloader image, then again for the firmware.
+
+The app reads `INFO_UF2.TXT` from the drive you select to confirm it really is the device's update drive and to identify the board before writing anything. If it can't confirm which Bluetooth stack your device uses it refuses to erase and points you at the [Web Flasher](https://flasher.meshtastic.org) instead — picking wrong there can leave the device needing a hardware programmer to recover.
### Other Flashing Options

diff --git a/docs/sv-rSE/user/firmware.md b/docs/sv-rSE/user/firmware.md
index 43b5f80764..2f9f4fdfcc 100644
--- a/docs/sv-rSE/user/firmware.md
+++ b/docs/sv-rSE/user/firmware.md
@@ -43,7 +43,15 @@ The most common update method for Android users:
When your radio is connected over **USB/serial** (rather than Bluetooth), the Firmware Update screen offers **USB File Transfer**. The app reboots the device into DFU mode, then prompts you to save the `.uf2` file to the device's DFU drive using the system file picker. This option appears only on a USB/serial connection — it is not available over Bluetooth.
-> ℹ️ **nRF bootloader note:** Some devices (e.g. RAK WisBlock RAK4631) need their bootloader flashed with the vendor's serial DFU tool (such as `adafruit-nrfutil`) — copying the `.uf2` alone won't update the bootloader. The app surfaces a hint when this applies.
+> ℹ️ **nRF bootloader note:** A vendor bootloader supplied as a `.zip` (e.g. RAK WisBlock RAK4631) has to be flashed with a serial DFU tool such as `adafruit-nrfutil` — copying that `.zip` to the drive won't work. A bootloader supplied as an `update-....uf2` **can** be installed by copying it to the drive; that is how the app's own bootloader upgrade works. The app surfaces a hint when the serial-only route applies.
+
+### Factory Erase and Bootloader Upgrade
+
+On a **USB/serial** connection, nRF52 and RP2040 devices also offer **Erase and reinstall** and, where an upgraded bootloader is published for the board, **Upgrade bootloader**.
+
+Erasing wipes everything on the device — channels, keys and all settings — and there is no backup, so the app asks for confirmation first. Both operations write two files in turn, so you will be asked to select the device's update drive twice: once for the erase or bootloader image, then again for the firmware.
+
+The app reads `INFO_UF2.TXT` from the drive you select to confirm it really is the device's update drive and to identify the board before writing anything. If it can't confirm which Bluetooth stack your device uses it refuses to erase and points you at the [Web Flasher](https://flasher.meshtastic.org) instead — picking wrong there can leave the device needing a hardware programmer to recover.
### Other Flashing Options

diff --git a/docs/tr-rTR/user/firmware.md b/docs/tr-rTR/user/firmware.md
index 7f7fd9b3fd..31e529ba5a 100644
--- a/docs/tr-rTR/user/firmware.md
+++ b/docs/tr-rTR/user/firmware.md
@@ -43,7 +43,15 @@ The most common update method for Android users:
When your radio is connected over **USB/serial** (rather than Bluetooth), the Firmware Update screen offers **USB File Transfer**. The app reboots the device into DFU mode, then prompts you to save the `.uf2` file to the device's DFU drive using the system file picker. This option appears only on a USB/serial connection — it is not available over Bluetooth.
-> ℹ️ **nRF bootloader note:** Some devices (e.g. RAK WisBlock RAK4631) need their bootloader flashed with the vendor's serial DFU tool (such as `adafruit-nrfutil`) — copying the `.uf2` alone won't update the bootloader. The app surfaces a hint when this applies.
+> ℹ️ **nRF bootloader note:** A vendor bootloader supplied as a `.zip` (e.g. RAK WisBlock RAK4631) has to be flashed with a serial DFU tool such as `adafruit-nrfutil` — copying that `.zip` to the drive won't work. A bootloader supplied as an `update-....uf2` **can** be installed by copying it to the drive; that is how the app's own bootloader upgrade works. The app surfaces a hint when the serial-only route applies.
+
+### Factory Erase and Bootloader Upgrade
+
+On a **USB/serial** connection, nRF52 and RP2040 devices also offer **Erase and reinstall** and, where an upgraded bootloader is published for the board, **Upgrade bootloader**.
+
+Erasing wipes everything on the device — channels, keys and all settings — and there is no backup, so the app asks for confirmation first. Both operations write two files in turn, so you will be asked to select the device's update drive twice: once for the erase or bootloader image, then again for the firmware.
+
+The app reads `INFO_UF2.TXT` from the drive you select to confirm it really is the device's update drive and to identify the board before writing anything. If it can't confirm which Bluetooth stack your device uses it refuses to erase and points you at the [Web Flasher](https://flasher.meshtastic.org) instead — picking wrong there can leave the device needing a hardware programmer to recover.
### Other Flashing Options

diff --git a/docs/uk-rUA/user/firmware.md b/docs/uk-rUA/user/firmware.md
index 4954943675..0b6959d200 100644
--- a/docs/uk-rUA/user/firmware.md
+++ b/docs/uk-rUA/user/firmware.md
@@ -43,7 +43,15 @@ The most common update method for Android users:
When your radio is connected over **USB/serial** (rather than Bluetooth), the Firmware Update screen offers **USB File Transfer**. The app reboots the device into DFU mode, then prompts you to save the `.uf2` file to the device's DFU drive using the system file picker. This option appears only on a USB/serial connection — it is not available over Bluetooth.
-> ℹ️ **nRF bootloader note:** Some devices (e.g. RAK WisBlock RAK4631) need their bootloader flashed with the vendor's serial DFU tool (such as `adafruit-nrfutil`) — copying the `.uf2` alone won't update the bootloader. The app surfaces a hint when this applies.
+> ℹ️ **nRF bootloader note:** A vendor bootloader supplied as a `.zip` (e.g. RAK WisBlock RAK4631) has to be flashed with a serial DFU tool such as `adafruit-nrfutil` — copying that `.zip` to the drive won't work. A bootloader supplied as an `update-....uf2` **can** be installed by copying it to the drive; that is how the app's own bootloader upgrade works. The app surfaces a hint when the serial-only route applies.
+
+### Factory Erase and Bootloader Upgrade
+
+On a **USB/serial** connection, nRF52 and RP2040 devices also offer **Erase and reinstall** and, where an upgraded bootloader is published for the board, **Upgrade bootloader**.
+
+Erasing wipes everything on the device — channels, keys and all settings — and there is no backup, so the app asks for confirmation first. Both operations write two files in turn, so you will be asked to select the device's update drive twice: once for the erase or bootloader image, then again for the firmware.
+
+The app reads `INFO_UF2.TXT` from the drive you select to confirm it really is the device's update drive and to identify the board before writing anything. If it can't confirm which Bluetooth stack your device uses it refuses to erase and points you at the [Web Flasher](https://flasher.meshtastic.org) instead — picking wrong there can leave the device needing a hardware programmer to recover.
### Other Flashing Options

diff --git a/docs/zh-rCN/user/firmware.md b/docs/zh-rCN/user/firmware.md
index 6b46c28e75..f898a430aa 100644
--- a/docs/zh-rCN/user/firmware.md
+++ b/docs/zh-rCN/user/firmware.md
@@ -43,7 +43,15 @@ The most common update method for Android users:
When your radio is connected over **USB/serial** (rather than Bluetooth), the Firmware Update screen offers **USB File Transfer**. The app reboots the device into DFU mode, then prompts you to save the `.uf2` file to the device's DFU drive using the system file picker. This option appears only on a USB/serial connection — it is not available over Bluetooth.
-> ℹ️ **nRF bootloader note:** Some devices (e.g. RAK WisBlock RAK4631) need their bootloader flashed with the vendor's serial DFU tool (such as `adafruit-nrfutil`) — copying the `.uf2` alone won't update the bootloader. The app surfaces a hint when this applies.
+> ℹ️ **nRF bootloader note:** A vendor bootloader supplied as a `.zip` (e.g. RAK WisBlock RAK4631) has to be flashed with a serial DFU tool such as `adafruit-nrfutil` — copying that `.zip` to the drive won't work. A bootloader supplied as an `update-....uf2` **can** be installed by copying it to the drive; that is how the app's own bootloader upgrade works. The app surfaces a hint when the serial-only route applies.
+
+### Factory Erase and Bootloader Upgrade
+
+On a **USB/serial** connection, nRF52 and RP2040 devices also offer **Erase and reinstall** and, where an upgraded bootloader is published for the board, **Upgrade bootloader**.
+
+Erasing wipes everything on the device — channels, keys and all settings — and there is no backup, so the app asks for confirmation first. Both operations write two files in turn, so you will be asked to select the device's update drive twice: once for the erase or bootloader image, then again for the firmware.
+
+The app reads `INFO_UF2.TXT` from the drive you select to confirm it really is the device's update drive and to identify the board before writing anything. If it can't confirm which Bluetooth stack your device uses it refuses to erase and points you at the [Web Flasher](https://flasher.meshtastic.org) instead — picking wrong there can leave the device needing a hardware programmer to recover.
### Other Flashing Options

diff --git a/docs/zh-rTW/user/firmware.md b/docs/zh-rTW/user/firmware.md
index 825bc71773..fbdd8e9145 100644
--- a/docs/zh-rTW/user/firmware.md
+++ b/docs/zh-rTW/user/firmware.md
@@ -43,7 +43,15 @@ Android 使用者最常用的更新方式:
When your radio is connected over **USB/serial** (rather than Bluetooth), the Firmware Update screen offers **USB File Transfer**. The app reboots the device into DFU mode, then prompts you to save the `.uf2` file to the device's DFU drive using the system file picker. This option appears only on a USB/serial connection — it is not available over Bluetooth.
-> ℹ️ **nRF bootloader note:** Some devices (e.g. RAK WisBlock RAK4631) need their bootloader flashed with the vendor's serial DFU tool (such as `adafruit-nrfutil`) — copying the `.uf2` alone won't update the bootloader. The app surfaces a hint when this applies.
+> ℹ️ **nRF bootloader note:** A vendor bootloader supplied as a `.zip` (e.g. RAK WisBlock RAK4631) has to be flashed with a serial DFU tool such as `adafruit-nrfutil` — copying that `.zip` to the drive won't work. A bootloader supplied as an `update-....uf2` **can** be installed by copying it to the drive; that is how the app's own bootloader upgrade works. The app surfaces a hint when the serial-only route applies.
+
+### Factory Erase and Bootloader Upgrade
+
+On a **USB/serial** connection, nRF52 and RP2040 devices also offer **Erase and reinstall** and, where an upgraded bootloader is published for the board, **Upgrade bootloader**.
+
+Erasing wipes everything on the device — channels, keys and all settings — and there is no backup, so the app asks for confirmation first. Both operations write two files in turn, so you will be asked to select the device's update drive twice: once for the erase or bootloader image, then again for the firmware.
+
+The app reads `INFO_UF2.TXT` from the drive you select to confirm it really is the device's update drive and to identify the board before writing anything. If it can't confirm which Bluetooth stack your device uses it refuses to erase and points you at the [Web Flasher](https://flasher.meshtastic.org) instead — picking wrong there can leave the device needing a hardware programmer to recover.
### Other Flashing Options

Served by rngit 1.5.0 - Generated in 0.95s